home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / stoktrk3.arc / STOCK.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-04-16  |  55.1 KB  |  1,457 lines

  1. PROGRAM STOCKTRADER     ;
  2. {This stocktrading program is rewritten from the basic STOCKTRADER program
  3. copywrited by DSF Associates, 1984}
  4. CONST
  5.     SELL:ARRAY[0..7] OF BYTE =
  6.     ($AA,$55,$AA,$55,$AA,$55,$AA,$55);
  7.     BUY:ARRAY[0..7] OF BYTE =($FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF);
  8. TICKER:STRING [125]='T        CLO        ANT         MK         LPT         KO         IBM      JP        N         DD    ';
  9. TICKER1:STRING [50]=' FWC        HCI        ACT       GLE        BC       ';
  10. TICKER2:STRING [125]='  23 1/8     19 3/4     15 7/8     10 7/8      13 1/4     71 3/8      132     45 1/2   153 1/8    61 ';
  11. TICKER3:STRING [50]='     13 7/8     18 1/8     7 1/4     13 1/4    37 1/4';
  12. TYPE
  13. NAME1=STRING[7];
  14. DATE1=STRING[8];
  15. DATER=STRING[8];
  16. CLAIM=CHAR;
  17. VAR
  18.     X,Y,X1,Y1,X2,Y2,X3,Y3,STEPPER,COLR,DOWSW,COLORSW,DATEM,DATED,DATEY,CANCEL1,CANCEL,CANCEL2,CANCEL3,LOCATEY       :INTEGER;
  19.     CHORD1,CHORD2,DISCLAIM,TOP,DOW,UP,DOWN,BACKUP,STARTSTR,ENDSTR,SHORTCOLOR,UPDATECOUNT,RESTART,FLAG3           :INTEGER;
  20.     VOLUMEST,SKIP,SKIP1,RED,YELLOW,WHITE,BLUE,CYAN,LTMAGENTA,MAGENTA,GRAY,MENUSKIP,STARTER,ERROR,STOP           :INTEGER;
  21.     COLORFILL,COLORPAL,TMODE,GREEN,FLAG1,FLAG2,LTGREEN,LTRED,CLOSECOLOR,LONGCOLOR,DATEFLAG,CUT,SPAN,LOCATEX       :INTEGER;
  22.     LONG    :ARRAY[1..32] OF INTEGER;
  23.     SHORT   :ARRAY[1..32] OF INTEGER;
  24.     CHORD   :ARRAY[1..32] OF INTEGER;
  25.     PRINT   :ARRAY[1..18] OF INTEGER;
  26.     LOW     :ARRAY[1..32,1..30] OF REAL;
  27.     HIGH    :ARRAY[1..32,1..30] OF REAL;
  28.     CLOSED  :ARRAY[1..32,1..30] OF REAL;
  29.     DATE    :ARRAY[1..32,1..30] OF DATE1;
  30.     NAME    :ARRAY[1..32] OF NAME1;
  31.     VOLUME  :ARRAY[1..32,1..30] OF REAL;
  32.     SHORTAVG:ARRAY[1..32,1..30] OF REAL;
  33.     SIGNAL  :ARRAY[1..32,1..30] OF INTEGER;
  34.     SIGNALHISTORY  :ARRAY[1..32] OF INTEGER;
  35.     LONGAVG :ARRAY[1..32,1..30] OF REAL;
  36.     MONTH   :ARRAY[1..12] OF STRING[12];
  37.     CLAIMMARK             :CLAIM;
  38.     DATENUM,SCREEN,SCREEN1,COLOR,GO    :CHAR;
  39.     STOCKFILE             : TEXT;
  40.     DATETEMP             :STRING[2];
  41.     ENHANCED,NONENHANCED     :STRING[3];
  42.     DOUBLE,NONDOUBLE     :STRING[3];
  43.     UNDERLINE,NONUNDERLINE   :STRING[3];
  44.     NAMEIT             :STRING[12];
  45.     ERASER,FILEWRITE         :STRING[79];
  46.     DATEP             :DATER;
  47.     STOCK,DAYHIGH,DAYLOW,DAYCLOSE,DAYVOLUME    :STRING[7];
  48.     LOWEST,LOWEST1,HIGHEST,HIGHEST1,AVERAGE,DOWPOINT,STARTPT1,STARTPT,GRAPHLINE        :REAL;
  49.     GRAPHMID,HIGHVOL,LONGST,SHORTST,SETTER,SETTER1,GRAPHNO1,START,HIGHT,LOWT,CLOSET,VOLUMET
  50.        :REAL;
  51. {$I GRAPH.P }
  52. PROCEDURE F3;
  53.     BEGIN
  54.     GOTOXY(1,24);WRITE(ERASER);
  55.     GOTOXY(24,24);WRITE('PRESS F3 TO ESCAPE TO MAIN MENU');
  56.     END;
  57. PROCEDURE CHANGECOLOR;
  58.     BEGIN
  59.     IF COLOR='Y' THEN BEGIN
  60.     LTMAGENTA:=13;RED:=4;WHITE:=15;GRAY:=7;LTGREEN:=10;LTRED:=12;MAGENTA:=2;CYAN:=1;BLUE:=1;YELLOW:=14;
  61.     COLORPAL:=3;COLORFILL:=1;GREEN:=10;
  62.     GRAPHCOLORMODE;TMODE:=3
  63.     END;
  64.     IF COLOR='N' THEN BEGIN
  65.     LTMAGENTA:=0;RED:=7;WHITE:=15;GRAY:=7;LTGREEN:=15;LTRED:=15;MAGENTA:=3;CYAN:=3;BLUE:=0;YELLOW:=7;
  66.     COLORPAL:=1;COLORFILL:=3;;GREEN:=0;
  67.     GRAPHMODE;TMODE:=2;
  68.     END;
  69. END;
  70. PROCEDURE SCREENPRINT;
  71.     BEGIN
  72.     TEXTMODE(TMODE);TEXTBACKGROUND(BLUE);TEXTCOLOR(YELLOW);CLRSCR;
  73.     FLAG1:=0;
  74.     WHILE FLAG1=0 DO BEGIN
  75.     ASSIGN(STOCKFILE,NAMEIT);
  76.     RESET(STOCKFILE);
  77.         FOR Y1:=1 TO 24 DO BEGIN
  78.         READLN(STOCKFILE,FILEWRITE);
  79.         WRITELN(FILEWRITE);
  80.         FILEWRITE:=COPY(FILEWRITE,58,5);
  81.         VAL(FILEWRITE,Y2,Y3);X3:=X3+Y2;
  82.         END;
  83.     READLN(STOCKFILE,SCREEN);
  84.     READLN(STOCKFILE,NAMEIT);
  85.     CLOSE(STOCKFILE);
  86.     FLAG1:=1;
  87.         IF SCREEN<>'P' THEN BEGIN
  88.         GOTOXY(80,25);READ(KBD,GO);
  89.         IF SCREEN='C' THEN BEGIN
  90.             IF (GO=#27) AND KEYPRESSED THEN BEGIN
  91.             READ(KBD,GO);
  92.             IF GO=CHAR(59) THEN BEGIN
  93.             FLAG1:=0;
  94.             END;
  95.             END;
  96.         END;
  97.         CLRSCR;SCREEN:='A';
  98.         END;
  99.     END;
  100.     END;
  101. PROCEDURE FILLHOLE;
  102.     BEGIN
  103.     IF (UP>0) OR (DOWN>0) THEN BEGIN
  104.         IF COLR=1 THEN BEGIN
  105.         Pattern(BUY);
  106.         FILLPATTERN(X3+2,Y3-UP,X3-2,Y3+BACKUP,CYAN);
  107.         END;
  108.         IF (COLR=2) AND (COLOR='N') THEN BEGIN
  109.         Pattern(SELL);
  110.         FILLPATTERN(X3+2,Y3-UP,X3-2,Y3+BACKUP,3);
  111.         END;
  112.         IF (COLR=2) AND (COLOR='Y') THEN BEGIN
  113.         Pattern(BUY);
  114.         FILLPATTERN(X3+2,Y3-UP,X3-2,Y3+BACKUP,MAGENTA);
  115.         END;
  116.         IF (COLR=3) AND (COLOR='Y') THEN BEGIN
  117.         Pattern(BUY);
  118.         FILLPATTERN(X3+2,Y3-UP,X3-2,Y3+BACKUP,3);
  119.         END;
  120.     END;
  121.     END;
  122. PROCEDURE DRAWLINE;
  123.     BEGIN
  124.     DRAW(0,Y1,300,Y1,3);
  125.     SKIP:=ROUND((SETTER-SETTER1)*GRAPHMID/8)+1;
  126.     IF SKIP<1 THEN SKIP:=1;
  127.     IF SKIP>25 THEN SKIP:=25;
  128.     IF SETTER1>1999 THEN GRAPHNO1:=SETTER1-2000 ELSE GRAPHNO1:=SETTER1;
  129.     IF SETTER1>999 THEN GRAPHNO1:=SETTER1-1000 ELSE GRAPHNO1:=SETTER1;
  130.     Y1:=SKIP;X1:=38;Y2:=SKIP+1;X2:=40;
  131.     TEXTCOLOR(7);WINDOW(X1,Y1,X2,Y2);GOTOXY(1,1);WRITE(GRAPHNO1:2:0);
  132.     GRAPHWINDOW(0,0,319,199);
  133.     END;
  134. PROCEDURE HISTORYTOP;
  135.     BEGIN
  136.     CLRSCR;
  137.     TEXTCOLOR(WHITE);
  138.     GOTOXY(2,2);WRITE('STOCK :',NAME[X]);
  139.     IF CLOSED[X,30]>CLOSED[X,29] THEN TEXTCOLOR(LTGREEN);
  140.     IF CLOSED[X,30]<CLOSED[X,29] THEN TEXTCOLOR(LTRED);
  141.     IF CLOSED[X,30]=CLOSED[X,29] THEN TEXTCOLOR(WHITE);
  142.     IF COLOR='N' THEN BEGIN
  143.     IF CLOSED[X,30]>CLOSED[X,29] THEN TEXTCOLOR(15);
  144.         IF CLOSED[X,30]<CLOSED[X,29] THEN BEGIN
  145.         TEXTCOLOR(0);TEXTBACKGROUND(7);
  146.         END;
  147.     IF CLOSED[X,30]=CLOSED[X,29] THEN TEXTCOLOR(7);
  148.     END;
  149.     GOTOXY(20,2);WRITE('Current Price :');WRITE(CLOSED[X,30]:4:2);
  150.     TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
  151.     IF LONGAVG[X,30]>LONGAVG[X,29] THEN TEXTCOLOR(LTGREEN);
  152.     IF LONGAVG[X,30]<LONGAVG[X,29] THEN TEXTCOLOR(LTRED);
  153.     IF LONGAVG[X,30]=LONGAVG[X,29] THEN TEXTCOLOR(WHITE);
  154.     IF COLOR='N' THEN BEGIN
  155.     IF LONGAVG[X,30]>LONGAVG[X,29] THEN TEXTCOLOR(15);
  156.         IF LONGAVG[X,30]<LONGAVG[X,29] THEN BEGIN
  157.         TEXTCOLOR(0);TEXTBACKGROUND(7);
  158.         END;
  159.     IF LONGAVG[X,30]=LONGAVG[X,29] THEN TEXTCOLOR(7);
  160.     END;
  161.     GOTOXY(54,2);WRITE('Current Average :');WRITE(LONGAVG[X,30]:4:2);
  162.     TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
  163.     WRITELN;
  164.     TEXTBACKGROUND(RED);TEXTCOLOR(WHITE);
  165.     IF COLOR='N' THEN BEGIN
  166.     TEXTBACKGROUND(7);TEXTCOLOR(0);
  167.     END;
  168.     GOTOXY(1,3);WRITE(ERASER);
  169.     GOTOXY(1,4);WRITE('   DATE         HIGH        LOW        CLOSE   VOLUME     SH. AVER  LG. AVER   ');
  170.     GOTOXY(1,5);WRITELN(ERASER);
  171.     TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
  172.     END;
  173. PROCEDURE UPDATE;
  174.     BEGIN
  175.     HISTORYTOP;
  176.     FOR Y:=STARTER TO 30 DO BEGIN
  177.     TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
  178.     IF COLOR='N' THEN TEXTCOLOR(7);
  179.     WRITE('  ',DATE[X,Y]:8,'   ',HIGH[X,Y]:8:2,'    ',LOW[X,Y]:8:2);
  180.         IF Y>1 THEN BEGIN
  181.         IF CLOSED[X,Y]>CLOSED[X,Y-1] THEN TEXTCOLOR(LTGREEN);
  182.         IF CLOSED[X,Y]<CLOSED[X,Y-1] THEN TEXTCOLOR(LTRED);
  183.         IF CLOSED[X,Y]=CLOSED[X,Y-1] THEN TEXTCOLOR(WHITE);
  184.         IF COLOR='N' THEN BEGIN
  185.         IF CLOSED[X,Y]>CLOSED[X,Y-1] THEN TEXTCOLOR(15);
  186.             IF CLOSED[X,Y]<CLOSED[X,Y-1] THEN BEGIN
  187.             TEXTCOLOR(0);TEXTBACKGROUND(7);
  188.             END;
  189.         IF CLOSED[X,Y]=CLOSED[X,Y-1] THEN TEXTCOLOR(7);
  190.         END;
  191.         END;
  192.     WRITE('   ',CLOSED[X,Y]:8:2);
  193.     TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
  194.     IF COLOR='N' THEN TEXTCOLOR(7);
  195.     WRITE(' ',VOLUME[X,Y]:8:0);
  196.         IF Y>1 THEN BEGIN
  197.         IF SHORTAVG[X,Y]>SHORTAVG[X,Y-1] THEN TEXTCOLOR(LTGREEN);
  198.         IF SHORTAVG[X,Y]<SHORTAVG[X,Y-1] THEN TEXTCOLOR(LTRED);
  199.         IF SHORTAVG[X,Y]=SHORTAVG[X,Y-1] THEN TEXTCOLOR(WHITE);
  200.         IF COLOR='N' THEN BEGIN
  201.         IF SHORTAVG[X,Y]>SHORTAVG[X,Y-1] THEN TEXTCOLOR(15);
  202.             IF SHORTAVG[X,Y]<SHORTAVG[X,Y-1] THEN BEGIN
  203.             TEXTCOLOR(0);TEXTBACKGROUND(7);
  204.             END;
  205.         IF SHORTAVG[X,Y]=SHORTAVG[X,Y-1] THEN TEXTCOLOR(7);
  206.         END;
  207.         END;
  208.     WRITE('    ',SHORTAVG[X,Y]:8:2);
  209.     TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
  210.     IF COLOR='N' THEN TEXTCOLOR(7);
  211.         IF Y>1 THEN BEGIN
  212.         IF LONGAVG[X,Y]>LONGAVG[X,Y-1] THEN TEXTCOLOR(LTGREEN);
  213.         IF LONGAVG[X,Y]<LONGAVG[X,Y-1] THEN TEXTCOLOR(LTRED);
  214.         IF LONGAVG[X,Y]=LONGAVG[X,Y-1] THEN TEXTCOLOR(WHITE);
  215.         IF COLOR='N' THEN BEGIN
  216.         IF LONGAVG[X,Y]>LONGAVG[X,Y-1] THEN TEXTCOLOR(15);
  217.             IF LONGAVG[X,Y]<LONGAVG[X,Y-1] THEN BEGIN
  218.             TEXTCOLOR(0);TEXTBACKGROUND(7);
  219.             END;
  220.         IF LONGAVG[X,Y]=LONGAVG[X,Y-1] THEN TEXTCOLOR(7);
  221.         END;
  222.         END;
  223.     WRITELN('   ',LONGAVG[X,Y]:8:2);
  224.     TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
  225.         IF COLOR='N' THEN TEXTCOLOR(7);
  226.         IF Y=18 THEN BEGIN
  227.         GOTOXY(28,25);WRITE('HIT SPACE BAR TO PROCEED');
  228.         SOUND(800);DELAY(400);NOSOUND;GO:=CHR(00);
  229.         WHILE GO<>CHR(32) BEGIN
  230.         READ(KBD,GO);
  231.             IF GO<>CHR(32) THEN BEGIN
  232.             SOUND(800);DELAY(400);NOSOUND;
  233.             END;
  234.         END;
  235.         CLRSCR;
  236.         HISTORYTOP;
  237.         END;
  238.     END;
  239.     END;
  240. PROCEDURE MENU; FORWARD;
  241. PROCEDURE WRITER;
  242.     BEGIN
  243.     Y:=0;STOCK:='';FLAG3:=0;CANCEL:=0;
  244.     WHILE Y<STOP DO BEGIN
  245.     Y:=Y+1;
  246.     GOTOXY(LOCATEX+Y,LOCATEY);READ(KBD,GO);
  247.         IF (GO=#27) AND KEYPRESSED THEN BEGIN
  248.         WHILE (GO=#27) DO BEGIN
  249.         READ(KBD,GO);
  250.             IF (GO=#59) THEN BEGIN
  251.             NAMEIT:='SCREEN'+SCREEN1+'.DAT';
  252.             SCREENPRINT;
  253.             FLAG3:=1;CLRSCR;
  254.             SCREEN:='M';
  255.             SCREEN1:='A';STOCK:='';GO:=#13;
  256.             END;
  257.             IF (GO=#61) THEN BEGIN
  258.             FLAG3:=1;CLRSCR;
  259.             SCREEN:='M';
  260.             SCREEN1:='A';STOCK:='';GO:=#13;
  261.             END;
  262.         END;
  263.         END;
  264.         IF FLAG3<>1 THEN BEGIN
  265.         IF GO<>CHR(08) THEN BEGIN
  266.         IF GO<>CHR(13) THEN STOCK:=STOCK+GO;
  267.         END;
  268.         IF GO=CHR(08) THEN BEGIN
  269.         CUT:=LENGTH(STOCK);CUT:=CUT-1;
  270.             IF CUT>0 THEN BEGIN
  271.             STOCK:=COPY(STOCK,1,CUT);Y:=Y-2;
  272.             END;
  273.             IF CUT<=0 THEN BEGIN;
  274.             STOCK:='';Y:=0;CUT:=0;
  275.             END;
  276.         END;
  277.         END;
  278.     GOTOXY(54,25);
  279.     IF GO<>CHR(13) THEN WRITE('       ');
  280.     GOTOXY(LOCATEX+1,LOCATEY);WRITE(STOCK);
  281.     IF GO=CHR(13) THEN Y:=STOP;
  282.     IF (GO=CHR(13)) AND (STOCK='') THEN CANCEL:=2;
  283.     IF (GO=CHR(13)) AND (FLAG3=1) THEN CANCEL:=3;
  284.     FLAG3:=0;
  285.     END;
  286.     END;
  287. PROCEDURE MENU;
  288.     BEGIN
  289.     IF SCREEN<>'J' THEN BEGIN
  290.     TEXTMODE(TMODE);TEXTCOLOR(LTRED);CLRSCR;WINDOW(1,1,80,25);CLRSCR;
  291.         IF COLOR='Y' THEN BEGIN
  292.         PORT[$3D9]:=BLUE
  293.         END;
  294.     GOTOXY(13,1);
  295.     CANCEL:=0;
  296.     WRITELN('[[[[[[[[[[[[[[[[[  THE STOCK TRADER  ]]]]]]]]]]]]]]]]]') ;
  297.     WRITELN;TEXTCOLOR(YELLOW);
  298.         IF DATEM>0 THEN BEGIN
  299.         GOTOXY(13,3);WRITE('THE STOCK DATE YOU ARE NOW USING IS - - ');TEXTCOLOR(WHITE);WRITELN(MONTH[DATEM],' ',DATED,',19',DATEY);
  300.         END;
  301.     GOTOXY(33,5);WRITELN('-  PORTFOLIO -');GOTOXY(1,6);TEXTCOLOR(WHITE);
  302.     WRITELN('--------------------------------------------------------------------------------');
  303.     GOTOXY(1,8);
  304.         FOR X:=1 TO 8 DO BEGIN
  305.         NAME[4*X-3]:=NAME[4*X-3]+'        ';NAME[4*X-2]:=NAME[4*X-2]+'        ';NAME[4*X-1]:=NAME[4*X-1]+'        ';
  306.         NAME[4*X]:=NAME[4*X]+'        ';
  307.         FOR Y:=3 DOWNTO 1 DO BEGIN
  308.             IF NAME[4*X-Y]<>'       ' THEN BEGIN
  309.             WRITE(' ',NAME[4*X-Y],' ');
  310.             TEXTCOLOR(YELLOW);
  311.             WRITE(CLOSED[4*X-Y,30]:7:2,'    ');
  312.             TEXTCOLOR(WHITE);
  313.             END;
  314.         END;
  315.         IF NAME[4*X]<>'       ' THEN BEGIN
  316.         WRITE(' ',NAME[4*X],' ');
  317.         TEXTCOLOR(YELLOW);
  318.         WRITELN(CLOSED[4*X,30]:7:2);
  319.         TEXTCOLOR(WHITE);
  320.         END;
  321.         END;
  322.     GOTOXY(1,17);
  323.     WRITELN('--------------------------------------------------------------------------------');
  324.     GOTOXY(1,18);
  325.     WRITELN('  (A)...Daily Price UPDATE            (G)...WRITE TO DISK & return to program');
  326.     WRITELN('  (B)...ADD a stock                   (H)...SPLIT a stock                    ');
  327.     WRITELN('  (C)...DELETE a stock                (I)...CHANGE monitor or printer defaults ');
  328.     WRITELN('  (D)...GRAPH a stock                 (J)...MODIFY trading indicators        ');
  329.     WRITELN('  (E)...CHANGE the date               (K)...Write to disk & EXIT program     ');
  330.     WRITELN('  (F)...PRINT 30 day trading sheet    (F1)..HELP                             ');
  331.     WRITELN;
  332.     END;
  333.     SCREEN1:='M';
  334.     WHILE (SCREEN1<'A') OR (SCREEN1>='L') DO BEGIN
  335.     GOTOXY(1,25);WRITE(ERASER);
  336.     GOTOXY(21,25);TEXTCOLOR(WHITE+16);WRITE('MAKE');TEXTCOLOR(WHITE);WRITE(' YOUR SELECTION  ( ',SCREEN,' )');
  337.     STOP:=1;LOCATEX:=43;LOCATEY:=25;WRITER;
  338.         IF CANCEL<>3 THEN BEGIN
  339.         IF ORD(GO)>90 THEN GO:=CHR(ORD(GO)-32);
  340.         IF GO<>CHR(13) THEN SCREEN:=GO;
  341.         IF SCREEN<>'A' THEN UPDATECOUNT:=0;
  342.         SCREEN1:=SCREEN;
  343.         IF (SCREEN<'A') OR (SCREEN>'L') THEN BEGIN
  344.         SOUND(800);DELAY(500);NOSOUND;
  345.         GOTOXY(1,25);WRITE(ERASER);
  346.         GOTOXY(23,25);TEXTCOLOR(WHITE);WRITE('INPUT ERROR - TRY AGAIN.');
  347.         END;
  348.         IF SCREEN='L' THEN BEGIN
  349.         SCREEN:='M';SCREEN1:='M';
  350.         END;
  351.         END;
  352.     CANCEL:=0;
  353.     END;
  354.     END;
  355. PROCEDURE STOCKSELECT;
  356.     BEGIN
  357.     STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;
  358.     WHILE STOCK<>'' DO BEGIN
  359.     Y2:=LENGTH(STOCK);INSERT('       ',STOCK,Y2+1);DELETE(STOCK,8,7);
  360.     FLAG1:=0;
  361.         FOR X:=1 TO TOP DO BEGIN
  362.         IF NAME[X]=STOCK THEN BEGIN
  363.         UPDATECOUNT:=X;FLAG1:=1;
  364.         STOCK:='';
  365.         END;
  366.         END;
  367.         IF FLAG1=0 THEN BEGIN
  368.         SOUND(800);DELAY(400);NOSOUND;
  369.         GOTOXY(1,25);WRITE('           THE STOCK YOU HAVE SELECTED IS NOT CURRENTLY IN THE DATABASE.');DELAY(2000);
  370.         GOTOXY(1,25);WRITE(ERASER);
  371.         GOTOXY(15,25);WRITE('PLEASE MAKE YOUR SELECTION AGAIN    (               )');
  372.         LOCATEX:=53;LOCATEY:=25;WRITER;
  373.         END;
  374.     END;
  375.     END;
  376. PROCEDURE UPDATEMSG;
  377.     BEGIN
  378.     GOTOXY(1,20);WRITELN('ENTER C TO CANCEL THE CURRENT ENTRIES. ENTER D TO DELETE THE LAST ENTRY LISTED.');
  379.     GOTOXY(1,21);WRITELN('ENTER N IF THE STOCK WAS NOT TRADED TODAY. ENTER R TO REVIEW FIRST PAGE HISTORY.');
  380.     GOTOXY(9,22);WRITE('THE DATE YOU ARE USING IS ');
  381.     IF COLOR='N' THEN BEGIN
  382.     TEXTCOLOR(0);TEXTBACKGROUND(7);
  383.     END;
  384.     IF COLOR='Y' THEN BEGIN
  385.     TEXTCOLOR(YELLOW);TEXTBACKGROUND(BLUE);
  386.     END;
  387.     WRITE(DATEM,'/',DATED,'/',DATEY);
  388.     TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
  389.     WRITE('  AND THE STOCK IS ');
  390.     IF COLOR='N' THEN BEGIN
  391.     TEXTCOLOR(0);TEXTBACKGROUND(7);
  392.     END;
  393.     IF COLOR='Y' THEN BEGIN
  394.     TEXTCOLOR(YELLOW);TEXTBACKGROUND(BLUE);
  395.     END;
  396.     WRITELN(NAME[X]);
  397.     TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
  398.     END;
  399. PROCEDURE SIGNALSET;
  400.     BEGIN
  401.     WHILE FLAG1=1 DO BEGIN
  402.     GOTOXY(1,25);WRITE(ERASER);
  403.     GOTOXY(12,25);WRITE('DAYS USED FOR THE LONG TERM AVERAGE?  (   ',LONG[X],'      )');
  404.     SKIP:=0;STOP:=3;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,SKIP,Y3);
  405.     IF SKIP>0 THEN LONG[X]:=SKIP;
  406.     SKIP:=0;
  407.     IF LONG[X]>=30 THEN FLAG1:=0;
  408.         IF LONG[X]<30 THEN BEGIN
  409.         GOTOXY(1,25);WRITE(ERASER);
  410.         SOUND(800);DELAY(400);NOSOUND;
  411.         GOTOXY(1,25);WRITE(ERASER);
  412.         GOTOXY(7,25);WRITE('WARNING!!!  LONG TERM AVERAGES LESS THEN 30 DAYS ARE NOT RECOMMENDED.');DELAY(2000);
  413.         GOTOXY(1,25);WRITE(ERASER);
  414.         GOTOXY(9,25);WRITE('DO YOU WISH TO CONTINUE WITH YOUR CURRENT SELECTION (Y/N) (   )');
  415.         GOTOXY(68,25);READ (GO);
  416.         IF (GO='y') OR (GO='Y') THEN FLAG1:=0 ELSE FLAG1:=1;
  417.         END;
  418.     END;
  419.     WHILE FLAG1=0 DO BEGIN
  420.     GOTOXY(1,25);WRITE(ERASER);
  421.     GOTOXY(11,25);WRITE('DAYS USED FOR THE SHORT TERM AVERAGE?  (   ',SHORT[X],'       )');
  422.     LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,SKIP,Y3);
  423.     IF SKIP>0 THEN SHORT[X]:=SKIP;
  424.     SKIP:=0;
  425.     IF SHORT[X]>=7 THEN FLAG1:=1;
  426.         IF SHORT[X]<7 THEN BEGIN
  427.         GOTOXY(1,25);WRITE(ERASER);
  428.         SOUND(800);DELAY(400);NOSOUND;
  429.         GOTOXY(1,25);WRITE(ERASER);
  430.         GOTOXY(7,25);WRITE('WARNING!!!  SHORT TERM AVERAGES LESS THEN 7 DAYS ARE NOT RECOMMENDED.');DELAY(2500);
  431.         GOTOXY(1,25);WRITE(ERASER);
  432.         GOTOXY(9,25);WRITE('DO YOU WISH TO CONTINUE WITH YOUR CURRENT SELECTION (Y/N) (   )');
  433.         GOTOXY(69,25);READ (GO);
  434.         IF (GO='y') OR (GO='Y') THEN FLAG1:=1 ELSE FLAG1:=0;
  435.         END;
  436.     END;
  437.     IF FLAG1<>0 THEN BEGIN
  438.     GOTOXY(1,25);WRITE(ERASER);
  439.     GOTOXY(17,25);WRITE('DAYS ARE USED FOR CHORD LENGTH?  (   ',CHORD[X],'        )');
  440.     STOP:=2;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,SKIP,Y3);
  441.     IF SKIP>0 THEN CHORD[X]:=SKIP;
  442.     SKIP:=0;
  443.     IF CHORD[X]=0 THEN CHORD[X]:=1;
  444.     GOTOXY(1,25);WRITE(ERASER);
  445.     END;
  446.     END;
  447. PROCEDURE STOCKSTART;
  448.     BEGIN
  449.     WHILE FLAG2=0 DO BEGIN
  450.     GOTOXY(1,25);WRITE(ERASER);
  451.     GOTOXY(25,25);WRITE('WHAT IS THE STOCK''S HIGH?   (          )');
  452.     STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,HIGH[X,30],Y3);
  453.     GOTOXY(1,25);WRITE(ERASER);
  454.     GOTOXY(25,25);WRITE('WHAT IS THE STOCK''S LOW?    (          )');
  455.     STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,LOW[X,30],Y3);
  456.     GOTOXY(1,25);WRITE(ERASER);
  457.     GOTOXY(25,25);WRITE('WHAT IS THE STOCK''S CLOSE?  (          )');
  458.     STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,CLOSED[X,30],Y3);
  459.     GOTOXY(1,25);WRITE(ERASER);
  460.     GOTOXY(25,25);WRITE('WHAT IS THE STOCK''S VOLUME? (          )');
  461.     STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,VOLUME[X,30],Y3);
  462.     IF HIGH[X,30]>LOW[X,30] THEN FLAG2:=1 ELSE FLAG2:=0;
  463.     IF CLOSED[X,30]>=LOW[X,30] THEN FLAG2:=1 ELSE FLAG2:=0;
  464.     IF CLOSED[X,30]<=HIGH[X,30] THEN FLAG2:=1 ELSE FLAG2:=0;
  465.     SHORTAVG[X,30]:=CLOSED[X,30];LONGAVG[X,30]:=CLOSED[X,30];
  466.     STR(DATEM,DATETEMP);
  467.     IF DATEM<10 THEN DATETEMP:=' '+DATETEMP;
  468.     DATE[X,30]:=DATETEMP+'/';
  469.     STR(DATED,DATETEMP);
  470.     IF DATED<10 THEN DATETEMP:=' '+DATETEMP;
  471.     DATE[X,30]:=DATE[X,30]+DATETEMP+'/';
  472.     STR(DATEY,DATETEMP);
  473.     DATE[X,30]:=DATE[X,30]+DATETEMP;
  474.         IF FLAG2=0 THEN BEGIN
  475.         GOTOXY(1,25);WRITE(ERASER);
  476.         SOUND(800);DELAY(400);NOSOUND;
  477.         GOTOXY(20,25);WRITE('ERROR IN ENTRY FIGURES - PLEASE REENTER.');DELAY(2000);
  478.         GOTOXY(1,25);WRITE(ERASER);
  479.         END;
  480.     END;
  481.     FLAG1:=1;SIGNALSET;
  482.     FOR Y:=1 TO 29 DO BEGIN
  483.     DATE[X,Y]:='       ';HIGH[X,Y]:=CLOSED[X,30];LOW[X,Y]:=CLOSED[X,30];
  484.     CLOSED[X,Y]:=CLOSED[X,30];VOLUME[X,Y]:=1;LONGAVG[X,Y]:=CLOSED[X,30];
  485.     SHORTAVG[X,Y]:=CLOSED[X,30];SIGNAL[X,Y]:=3;
  486.     END;
  487.     STOCK:='';
  488.     END;
  489. BEGIN
  490. ERASER:='                                                                               ';
  491. ASSIGN(STOCKFILE,'CONFIG.DAT');
  492. RESET(STOCKFILE);
  493. READLN(STOCKFILE,COLOR);
  494. READLN(STOCKFILE,PRINT[1],PRINT[2],PRINT[3]);
  495. ENHANCED:=CHR(PRINT[1])+CHR(PRINT[2])+CHR(PRINT[3]);
  496. READLN(STOCKFILE,PRINT[4],PRINT[5],PRINT[6]);
  497. NONENHANCED:=CHR(PRINT[4])+CHR(PRINT[5])+CHR(PRINT[6]);
  498. READLN(STOCKFILE,PRINT[7],PRINT[8],PRINT[9]);
  499. UNDERLINE:=CHR(PRINT[7])+CHR(PRINT[8])+CHR(PRINT[9]);
  500. READLN(STOCKFILE,PRINT[10],PRINT[11],PRINT[12]);
  501. NONUNDERLINE:=CHR(PRINT[10])+CHR(PRINT[11])+CHR(PRINT[12]);
  502. READLN(STOCKFILE,PRINT[13],PRINT[14],PRINT[15]);
  503. DOUBLE:=CHR(PRINT[13])+CHR(PRINT[14])+CHR(PRINT[15]);
  504. READLN(STOCKFILE,PRINT[16],PRINT[17],PRINT[18]);
  505. NONDOUBLE:=CHR(PRINT[16])+CHR(PRINT[17])+CHR(PRINT[18]);
  506. CLOSE(STOCKFILE);
  507. CLRSCR;GOTOXY(20,12);WRITELN('THIS PROGRAM NEEDS A GRAPHICS MONITOR.');
  508. CHANGECOLOR;
  509. WINDOW(1,1,40,25);
  510. GraphBackground(BLUE);
  511. TextColor(YELLOW);
  512. Palette(COLORPAL);
  513. GRAPHWINDOW(1,28,320,73);
  514. Y:=0;
  515.     FOR X:=320 DOWNTO 120 DO BEGIN
  516.     IF Y=20 THEN BEGIN
  517.     Y:=0;CLEARSCREEN;
  518.     DRAW(X,1,X+16,1,3);DRAW(X+16,1,X+16,4,3);DRAW(X+16,4,X+10,4,3);DRAW(X+10,4,X+10,44,3);
  519.     DRAW(X+10,44,X+6,44,3);DRAW(X+6,44,X+6,4,3);DRAW(X+6,4,X,4,3);DRAW(X,4,X,1,3);
  520.     { MAKES T}
  521.     DRAW(X+24,1,X+28,1,3);DRAW(X+28,1,X+28,18,3);DRAW(X+28,18,X+36,18,3);DRAW(X+36,18,X+36,1,3);DRAW(X+36,1,X+40,1,3);
  522.     DRAW(X+40,1,X+40,44,3);DRAW(X+40,44,X+36,44,3);DRAW(X+36,44,X+36,24,3);DRAW(X+36,24,X+28,24,3);DRAW(X+28,24,X+28,44,3);
  523.     DRAW(X+28,44,X+24,44,3);DRAW(X+24,44,X+24,1,3);
  524.     { MAKES H}
  525.     DRAW(X+48,1,X+64,1,3);DRAW(X+64,1,X+64,4,3);DRAW(X+64,4,X+52,4,3);DRAW(X+52,4,X+52,20,3);DRAW(X+52,20,X+56,20,3);
  526.     DRAW(X+56,20,X+56,24,3);DRAW(X+56,24,X+52,24,3);DRAW(X+52,24,X+52,40,3);DRAW(X+52,40,X+64,40,3);DRAW(X+64,40,X+64,44,3);
  527.     DRAW(X+64,44,X+48,44,3);DRAW(X+48,44,X+48,1,3);
  528.     { MAKES E}
  529.     SOUND(50);DELAY(20);SOUND(500);DELAY(20);NOSOUND;
  530.     END;
  531.     Y:=Y+1
  532.     END;
  533. FillShape(X+1,2,COLORFILL,3);
  534. FillShape(X+25,30,COLORFILL,3);
  535. FillShape(X+49,30,COLORFILL,3);
  536. GRAPHWINDOW(1,92,140,136);Y:=0;
  537.     FOR X:=-160 TO 20 DO BEGIN
  538.     IF Y=30 THEN BEGIN
  539.     Y:=0;CLEARSCREEN;
  540.     DRAW(X,1,X+16,1,3);DRAW(X+16,1,X+16,8,3);DRAW(X+16,8,X+12,8,3);DRAW(X+12,8,X+12,4,3);DRAW(X+12,4,X+4,4,3);
  541.     DRAW(X+4,4,X+4,20,3);DRAW(X+4,20,X+16,20,3);DRAW(X+16,20,X+16,44,3);DRAW(X+16,44,X,144,3);DRAW(X,44,X,36,3);
  542.     DRAW(X,36,X+4,36,3);DRAW(X+4,36,X+4,40,3);DRAW(X+4,40,X+12,40,3);DRAW(X+12,40,X+12,24,3);DRAW(X+12,24,X,24,3);
  543.     DRAW(X,24,X,1,3);
  544.     { MAKE S}
  545.     DRAW(X+24,1,X+40,1,3);DRAW(X+40,1,X+40,4,3);DRAW(X+40,4,X+34,4,3);DRAW(X+34,4,X+34,44,3);
  546.     DRAW(X+34,44,X+30,44,3);DRAW(X+30,44,X+30,4,3);DRAW(X+30,4,X+24,4,3);DRAW(X+24,4,X+24,1,3);
  547.     { MAKES T}
  548.     DRAW(X+48,1,X+64,1,3);DRAW(X+64,1,X+64,44,3);DRAW(X+64,44,X+48,44,3);DRAW(X+48,44,X+48,1,3);
  549.     DRAW(X+52,4,X+60,4,3);DRAW(X+60,4,X+60,40,3);DRAW(X+60,40,X+52,40,3);DRAW(X+52,40,X+52,4,3);
  550.     {MAKE O}
  551.     DRAW(X+72,1,X+88,1,3);DRAW(X+88,1,X+88,8,3);DRAW(X+88,8,X+84,8,3);DRAW(X+84,8,X+84,4,3);
  552.     DRAW(X+84,4,X+76,4,3);DRAW(X+76,4,X+76,40,3);DRAW(X+76,40,X+84,40,3);DRAW(X+84,40,X+84,36,3);
  553.     DRAW(X+84,36,X+88,36,3);DRAW(X+88,36,X+88,44,3);DRAW(X+88,44,X+72,44,3);DRAW(X+72,44,X+72,1,3);
  554.     {MAKE C}
  555.     DRAW(X+96,1,X+100,1,3);DRAW(X+100,1,X+100,20,3);DRAW(X+100,20,X+108,1,3);DRAW(X+108,1,X+112,1,3);
  556.     DRAW(X+112,1,X+104,22,3);DRAW(X+104,22,X+112,44,3);DRAW(X+112,44,X+108,44,3);DRAW(X+108,44,X+100,24,3);
  557.     DRAW(X+100,24,X+100,44,3);DRAW(X+100,44,X+96,44,3);DRAW(X+96,44,X+96,1,3);
  558.     {MAKE K}
  559.     SOUND(50);DELAY(20);SOUND(500);DELAY(20);NOSOUND;
  560.     END;
  561.     Y:=Y+1
  562.     END;
  563. FillShape(X+1,2,COLORFILL,3);
  564. FillShape(X+25,2,COLORFILL,3);
  565. FillShape(X+49,2,COLORFILL,3);
  566. FillShape(X+73,2,COLORFILL,3);
  567. FillShape(X+97,2,COLORFILL,3);
  568. GRAPHWINDOW(144,92,320,136);Y:=0;
  569.     FOR X:=46 DOWNTO -134 DO BEGIN
  570.     IF Y=30 THEN BEGIN
  571.     Y:=0;CLEARSCREEN;
  572.     DRAW(X+144,1,X+160,1,3);DRAW(X+160,1,X+160,4,3);DRAW(X+160,4,X+154,4,3);DRAW(X+154,4,X+154,44,3);
  573.     DRAW(X+154,44,X+150,44,3);DRAW(X+150,44,X+150,4,3);DRAW(X+150,4,X+144,4,3);DRAW(X+144,4,X+144,1,3);
  574.     { MAKES T}
  575.     DRAW(X+168,1,X+184,1,3);DRAW(X+184,1,X+184,22,3);DRAW(X+184,22,X+180,22,3);DRAW(X+180,22,X+184,44,3);
  576.     DRAW(X+184,44,X+180,44,3);DRAW(X+180,44,X+176,22,3);DRAW(X+176,22,X+172,22,3);DRAW(X+172,22,X+172,44,3);
  577.     DRAW(X+172,44,X+168,44,3);DRAW(X+168,44,X+168,1,3);DRAW(X+172,4,X+180,4,3);DRAW(X+180,4,X+180,20,3);
  578.     DRAW(X+180,20,X+172,20,3);DRAW(X+172,20,X+172,4,3);
  579.     {MAKE R}
  580.     DRAW(X+192,44,X+192,1,3);DRAW(X+192,1,X+208,1,3);DRAW(X+208,1,X+208,44,3);DRAW(X+208,44,X+204,44,3);
  581.     DRAW(X+204,44,X+204,30,3);DRAW(X+204,30,X+196,30,3);DRAW(X+196,30,X+196,44,3);DRAW(X+196,4,X+204,4,3);
  582.     DRAW(X+204,4,X+204,26,3);DRAW(X+204,26,X+196,26,3);DRAW(X+196,26,X+196,4,3);
  583.     {MAKE A}
  584.     DRAW(X+216,1,X+228,1,3);DRAW(X+228,1,X+232,4,3);DRAW(X+232,4,X+232,40,3);DRAW(X+232,40,X+228,44,3);
  585.     DRAW(X+228,44,X+216,44,3);DRAW(X+216,44,X+216,1,3);DRAW(X+220,4,X+224,4,3);DRAW(X+224,4,X+228,8,3);
  586.     DRAW(X+228,8,X+228,36,3);DRAW(X+228,36,X+224,40,3);DRAW(X+224,40,X+220,40,3);DRAW(X+220,40,X+220,4,3);
  587.     {MAKE D}
  588.     DRAW(X+240,1,X+256,1,3);DRAW(X+256,1,X+256,4,3);DRAW(X+256,4,X+244,4,3);DRAW(X+244,4,X+244,20,3);
  589.     DRAW(X+244,20,X+248,20,3);DRAW(X+248,20,X+248,24,3);DRAW(X+248,24,X+244,24,3);DRAW(X+244,24,X+244,40,3);
  590.     DRAW(X+244,40,X+256,40,3);DRAW(X+256,40,X+256,44,3);DRAW(X+256,44,X+240,44,3);DRAW(X+240,44,X+240,1,3);
  591.     { MAKES E}
  592.     DRAW(X+264,1,X+280,1,3);DRAW(X+280,1,X+280,22,3);DRAW(X+280,22,X+276,22,3);DRAW(X+276,22,X+280,44,3);
  593.     DRAW(X+280,44,X+276,44,3);DRAW(X+276,44,X+272,22,3);DRAW(X+272,22,X+268,22,3);DRAW(X+268,22,X+268,44,3);
  594.     DRAW(X+268,44,X+264,44,3);DRAW(X+264,44,X+264,1,3);DRAW(X+268,4,X+276,4,3);DRAW(X+276,4,X+276,20,3);
  595.     DRAW(X+276,20,X+268,20,3);DRAW(X+268,20,X+268,4,3);
  596.     {MAKE R}
  597.     SOUND(50);DELAY(20);SOUND(500);DELAY(20);NOSOUND;
  598.     END;
  599.     Y:=Y+1
  600.     END;
  601. FillShape(X+145,2,COLORFILL,3);
  602. FillShape(X+169,2,COLORFILL,3);
  603. FillShape(X+193,2,COLORFILL,3);
  604. FillShape(X+217,2,COLORFILL,3);
  605. FillShape(X+241,2,COLORFILL,3);
  606. FillShape(X+265,2,COLORFILL,3);
  607. TOP:=0;
  608. ASSIGN(STOCKFILE,'STOCKS.DAT');
  609. RESET(STOCKFILE);
  610. READLN(STOCKFILE,DISCLAIM);STEPPER:=39;STARTSTR:=1;ENDSTR:=2;
  611. TEXTCOLOR(3);GOTOXY(9,24);WRITE('LOADING STOCK DATA FILES');
  612. GOTOXY(5,2);WRITE('Copyright 1985 by DSF Associates');
  613. GOTOXY(14,19);WRITE('Version 2.00');
  614. WINDOW(1,1,40,25);
  615.     FOR X:=1 TO 32 DO BEGIN
  616.     IF NOT EOF(STOCKFILE) THEN BEGIN
  617.     IF (COLOR='Y') AND (ODD(X)) THEN TEXTCOLOR(2);
  618.     IF (COLOR='N') AND (ODD(X)) THEN TEXTCOLOR(0);
  619.     IF NOT ODD(X) THEN TEXTCOLOR(3);
  620.     GOTOXY(9,24);WRITE('LOADING');TEXTCOLOR(3);
  621.     READLN(STOCKFILE,NAME[X]);
  622.     READLN(STOCKFILE,LONG[X]);
  623.     READLN(STOCKFILE,SHORT[X]);
  624.     READLN(STOCKFILE,CHORD[X]);
  625.     READLN(STOCKFILE,SIGNALHISTORY[X]);
  626.     TOP:=TOP+1;
  627.     GOTOXY(STEPPER,21);WRITE(COPY(TICKER+TICKER1,STARTSTR,ENDSTR));
  628.     GOTOXY(STEPPER,22);WRITE(COPY(TICKER2+TICKER3,STARTSTR,ENDSTR));
  629.     ENDSTR:=ENDSTR+4;STEPPER:=STEPPER-4;IF STEPPER<1 THEN STEPPER:=1;
  630.     IF ENDSTR>40 THEN ENDSTR:=40;
  631.     IF ENDSTR=40 THEN STARTSTR:=STARTSTR+4;
  632.     SOUND(50);DELAY(20);SOUND(500);DELAY(20);NOSOUND;SKIP:=0;
  633.         FOR Y:=1 TO 30 DO BEGIN
  634.         READLN(STOCKFILE,DATE[X,Y],HIGH[X,Y],LOW[X,Y],CLOSED[X,Y],VOLUME[X,Y],LONGAVG[X,Y],SHORTAVG[X,Y],SIGNAL[X,Y]) ;
  635.         END;
  636.     END;
  637.     IF TOP<X THEN BEGIN
  638.     NAME[X]:='';
  639.     END;
  640.     END;
  641. MONTH[1]:='JANUARY';MONTH[2]:='FEBRUARY';MONTH[3]:='MARCH';MONTH[4]:='APRIL';MONTH[5]:='MAY';MONTH[6]:='JUNE';
  642. MONTH[7]:='JULY';MONTH[8]:='AUGUST';MONTH[9]:='SEPTEMBER';MONTH[10]:='OCTOBER';MONTH[11]:='NOVEMBER';
  643. MONTH[12]:='DECEMBER';
  644.     TEXTMODE(TMODE);TEXTBACKGROUND(BLUE);TEXTCOLOR(YELLOW);CLRSCR;
  645.     PORT[$3D9]:=BLUE;
  646.     NAMEIT:='MONEY.DAT';
  647.     X3:=0;Y2:=0;Y3:=0;
  648.     SCREENPRINT;
  649.     IF X3<>10024 THEN HALT;
  650.     X3:=0;Y2:=0;Y3:=0;
  651.     SCREEN:='E';
  652.     IF DISCLAIM=1 THEN BEGIN
  653.     GOTOXY(1,4);
  654.     WRITELN(' The STOCKTRADER is designed to assist the user in the decision making process');
  655.     WRITELN;
  656.     WRITELN(' involved in the buying and selling of stocks.  As with all advise on stock');
  657.     WRITELN;
  658.     WRITELN(' transactions, the ultimate selection and decision to trade in securities is');
  659.     WRITELN;
  660.     WRITELN(' totally dependant on the views and knowledge of the individual investor.');
  661.     WRITELN;
  662.     TEXTCOLOR(LTRED);TEXTBACKGROUND(BLUE);
  663.     WRITELN(' DSF Associates assume no liability in your use of this aid in the purchase');
  664.     WRITELN('                                                                           ');
  665.     WRITELN(' or sale of securities.  Any gains or losses are totally dependant on your ');
  666.     WRITELN('                                                                           ');
  667.     WRITELN(' judgement and not the recommendation of this program.                     ');
  668.     textcolor(YELLOW);Textbackground(BLUE);
  669.     WRITELN('                                                                            ');
  670.     WRITE(' It must be ');TEXTCOLOR(LTRED);TEXTBACKGROUND(BLUE);Write('CLEARLY');TEXTCOLOR(YELLOW);TEXTBACKGROUND(BLUE);
  671.     WRITELN(' understood that this program is no substitute for exper-');
  672.     WRITELN('                                                                           ');
  673.     WRITELN(' ience and trading knowledge, nor is it designed to replace the experience ');
  674.     WRITELN;
  675.     WRITELN(' and advise of a good broker.                                              ');
  676.     WRITELN;WRITELN;
  677.     WRITE('   THIS MESSAGE CAN BE CANCELED ON FUTURE RUNS BY PRESSING THE F2 KEY NOW.  ');
  678.     READ(KBD,GO);
  679.     IF (GO=#27) AND KEYPRESSED THEN BEGIN
  680.     READ(KBD,GO);
  681.         IF (GO=#60) THEN BEGIN
  682.         DISCLAIM:=0;
  683.         END;
  684.     END;
  685.     CLRSCR;
  686.     END;
  687.     WHILE SCREEN<'N' BEGIN
  688.     IF SCREEN='E' THEN BEGIN
  689.     CLRSCR;DATEM:=0;DATED:=0;DATEY:=0;
  690.     TEXTCOLOR(YELLOW);
  691.     PORT[$3D9]:=BLUE;
  692.     NAMEIT:='SCREENE.DAT';
  693.     SCREENPRINT;
  694.     TEXTCOLOR(WHITE+16);
  695.     GOTOXY(32,2);WRITE('POST');
  696.     TEXTCOLOR(LTRED);GOTOXY(29,12);Write('SEQUENTIALLY.');
  697.     TEXTCOLOR(YELLOW);
  698.     Y1:=1;
  699.         WHILE Y1=1 DO BEGIN
  700.         GOTOXY(37,23);READ(KBD,DATENUM);
  701.         IF DATENUM=CHR(13) THEN Y1:=0;
  702.         IF Y1=0 THEN DATEFLAG:=0 ELSE DATEFLAG:=1;
  703.         IF Y1=1 THEN BEGIN
  704.         WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATEM:=Y2*10;
  705.         GOTOXY(38,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATEM:=DATEM + Y2;
  706.         {GET AND PRINT MONTH - DATEM}
  707.         IF (DATEM>12) OR (DATEM<1) THEN FLAG1:=1 ELSE FLAG1:=0;
  708.             IF FLAG1=0 THEN BEGIN
  709.             GOTOXY(41,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATED:=Y2*10;
  710.             GOTOXY(42,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATED:=DATED + Y2;
  711.             IF (DATED>31) OR (DATED<1) THEN FLAG1:=1 ELSE FLAG1:=0;
  712.             END;
  713.             {GET AND PRINT DAY - DATED}
  714.             IF FLAG1=0 THEN BEGIN
  715.             GOTOXY(45,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATEY:=Y2*10;
  716.             GOTOXY(46,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATEY:=DATEY + Y2;
  717.             IF (DATEY>80) OR (DATEY<99) THEN Y1:=0 ELSE Y1:=1;
  718.             {GET AND PRINT YEAR - DATEY}
  719.             END;
  720.             IF FLAG1=1 THEN BEGIN
  721.             SOUND(800);DELAY(400);NOSOUND;GOTOXY(1,23);WRITELN('                                   ___/___/___ ');
  722.             END;
  723.         END;
  724.         END;
  725.     SCREEN:='M';SCREEN1:='A';UPDATECOUNT:=0;
  726.     END;
  727.     IF SCREEN='M' THEN BEGIN
  728.     SCREEN:=SCREEN1;
  729.     MENU;
  730.     END;
  731.     IF (SCREEN='A') AND (DATEFLAG=0) THEN BEGIN
  732.     GOTOXY(1,25);WRITE(ERASER);
  733.     SOUND(800);DELAY(400);NOSOUND;
  734.     GOTOXY(15,25);WRITE('THERE IS A PROBLEM WITH THE DATE.  PLEASE REENTER.');DELAY(2000);
  735.     SCREEN:='E'
  736.     END;
  737.     IF (SCREEN='A') AND (DATEFLAG=1) THEN BEGIN
  738.     TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
  739.     STARTER:=19;CANCEL:=0;
  740.     UPDATECOUNT:=UPDATECOUNT+1;
  741.     IF UPDATECOUNT>TOP THEN UPDATECOUNT:=1;
  742.     GOTOXY(45,23);WRITE('UPDATE HELP SCREEN');
  743.     GOTOXY(1,25);WRITE(ERASER);
  744.     GOTOXY(15,25);WRITE('WHICH STOCK DO YOU WISH TO UPDATE   (  ',NAME[UPDATECOUNT],'  )');
  745.     F3;
  746.     STOCKSELECT;
  747.     GOTOXY(1,24);WRITE(ERASER);
  748.         IF CANCEL<3 THEN BEGIN
  749.         CANCEL:=0;CANCEL1:=0;CANCEL2:=0;CANCEL3:=0;
  750.         IF STOCK='' THEN X:=UPDATECOUNT;
  751.         WHILE CANCEL<>1 DO BEGIN
  752.         CLRSCR;UPDATE;FLAG2:=0;RESTART:=0;
  753.         TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
  754.         UPDATEMSG;X1:=1;
  755.             WHILE X1<5 DO BEGIN
  756.             IF (CANCEL1<>1) OR (CANCEL2<>1) OR (CANCEL3<>1) THEN BEGIN
  757.                 IF X1=1 THEN BEGIN
  758.                 FLAG2:=0;CANCEL:=0;CANCEL1:=0;
  759.                 GOTOXY(20,24);WRITE('WHAT IS THIS DATE HIGH?   ');
  760.                 READ(DAYHIGH);
  761.                 VAL(DAYHIGH,HIGHT,ERROR);
  762.                 IF DAYHIGH='n' THEN DAYHIGH:='N';
  763.                 IF DAYHIGH='N' THEN BEGIN
  764.                 HIGHT:=HIGH[X,30];LOWT:=LOW[X,30];CLOSET:=CLOSED[X,30];VOLUMET:=0.001;
  765.                 CANCEL:=1;
  766.                 END;
  767.                 IF DAYHIGH='c' THEN DAYHIGH:='C';
  768.                 IF DAYHIGH='d' THEN DAYHIGH:='D';
  769.                 IF DAYHIGH='r' THEN DAYHIGH:='R';
  770.                 IF (DAYHIGH='D') OR (DAYHIGH='C') OR (DAYHIGH='R') THEN BEGIN
  771.                 CANCEL:=1;FLAG2:=1;
  772.                 IF DAYHIGH='R' THEN RESTART:=1
  773.                 END;
  774.                 IF CANCEL<>1 THEN BEGIN
  775.                     IF HIGHT<=0 THEN BEGIN
  776.                     SOUND(800);DELAY(400);NOSOUND;
  777.                     GOTOXY(1,24);WRITE(ERASER);
  778.                     GOTOXY(21,24);WRITE('STOCK VALUES OF ZERO ARE NOT ALLOWED.');DELAY(2000);
  779.                     CANCEL1:=1;FLAG2:=1;
  780.                     END;
  781.                 END;
  782.                 IF (CANCEL<>1) AND (CANCEL1<>1) THEN BEGIN
  783.                     IF (HIGHT>(HIGH[X,30]*1.05)) OR (HIGHT<(HIGH[X,30]*0.95)) THEN BEGIN
  784.                     SOUND(800);DELAY(400);NOSOUND;GOTOXY(3,24);
  785.                     WRITE('TODAY''S HIGH DIFFERS FROM YESTERDAY''S HIGH BY MORE THEN 5% - OK (Y OR N)');
  786.                     Y2:=0;
  787.                     WHILE Y2=0 DO BEGIN
  788.                     READ (GO);
  789.                         IF (GO='N') OR (GO='n') OR (GO='Y') OR (GO='y') THEN BEGIN
  790.                         IF (GO='N') OR (GO='n') THEN BEGIN
  791.                         FLAG2:=1;CANCEL1:=1;
  792.                         END;
  793.                         Y2:=1;
  794.                         END;
  795.                     END;
  796.                     END;
  797.                 END;
  798.                 GOTOXY(1,24);WRITE(ERASER);
  799.                 IF (FLAG2=1) AND (CANCEL1=1) THEN X1:=1 ELSE X1:=2;
  800.                 IF DAYHIGH='N' THEN X1:=5;
  801.                 IF (FLAG2=1) AND (CANCEL=1) THEN X1:=5;
  802.                 END;
  803.             END;
  804.             IF (CANCEL<>1) OR (CANCEL2=1) THEN BEGIN
  805.                 IF X1=2 THEN BEGIN
  806.                 FLAG2:=0;CANCEL2:=0;
  807.                 GOTOXY(20,24);WRITE('WHAT IS THIS DATE LOW?    ');
  808.                 READ(DAYLOW);
  809.                 VAL(DAYLOW,LOWT,ERROR);
  810.                 IF DAYLOW='n' THEN DAYLOW:='N';
  811.                 IF DAYLOW='N' THEN BEGIN
  812.                 HIGHT:=HIGH[X,30];LOWT:=LOW[X,30];CLOSET:=CLOSED[X,30];VOLUMET:=0.001;
  813.                 CANCEL:=1;X1:=5;
  814.                 END;
  815.                 IF DAYLOW='c' THEN DAYLOW:='C';
  816.                 IF DAYLOW='d' THEN DAYLOW:='D';
  817.                 IF DAYLOW='r' THEN DAYLOW:='R';
  818.                 IF (DAYLOW='D') OR (DAYLOW='C') OR (DAYLOW='R') THEN BEGIN
  819.                 CANCEL:=1;FLAG2:=1;
  820.                 IF DAYLOW='R' THEN RESTART:=1;
  821.                 END;
  822.                 IF CANCEL<>1 THEN BEGIN
  823.                     IF LOWT<=0 THEN BEGIN
  824.                     GOTOXY(1,24);WRITE(ERASER);
  825.                     SOUND(800);DELAY(400);NOSOUND;
  826.                     GOTOXY(21,24);WRITE('STOCK VALUES OF ZERO ARE NOT ALLOWED.');DELAY(2000);
  827.                     FLAG2:=1;CANCEL2:=1;
  828.                     END;
  829.                 END;
  830.                 IF CANCEL<>1 THEN BEGIN
  831.                     IF LOWT>HIGHT THEN BEGIN
  832.                     SOUND(800);DELAY(400);NOSOUND;GOTOXY(16,24);
  833.                     WRITE('TODAYS LOW EXCEEDS TODAY HIGH - PLEASE REENTER.');DELAY(2000);
  834.                     FLAG2:=1;CANCEL1:=1;
  835.                     END;
  836.                 END;
  837.                 GOTOXY(1,24);WRITE(ERASER);
  838.                 IF (CANCEL2=1) AND (FLAG2=1) THEN X1:=2 ELSE X1:=3;
  839.                 IF DAYLOW='N' THEN X1:=5;
  840.                 IF (CANCEL=1) AND (FLAG2=1) THEN X1:=5;
  841.                 IF (CANCEL1=1) AND (FLAG2=1) THEN X1:=1;
  842.                 END;
  843.             END;
  844.             IF (CANCEL<>1) OR (CANCEL3=1) OR (CANCEL2<>1) THEN BEGIN
  845.                 IF X1=3 THEN BEGIN
  846.                 FLAG2:=0;CANCEL3:=0;
  847.                 GOTOXY(20,24);WRITE('WHAT IS THIS DATE CLOSE? ');
  848.                 READ(DAYCLOSE);
  849.                 IF DAYCLOSE='n' THEN DAYCLOSE:='N';
  850.                 IF DAYCLOSE='N' THEN BEGIN
  851.                 HIGHT:=HIGH[X,30];LOWT:=LOW[X,30];CLOSET:=CLOSED[X,30];VOLUMET:=0.001;
  852.                 CANCEL:=1;X1:=5;
  853.                 END;
  854.                 VAL(DAYCLOSE,CLOSET,ERROR);
  855.                 IF DAYCLOSE='c' THEN DAYCLOSE:='C';
  856.                 IF DAYCLOSE='d' THEN DAYCLOSE:='D';
  857.                 IF DAYCLOSE='r' THEN DAYCLOSE:='R';
  858.                 IF (DAYCLOSE='D') OR (DAYCLOSE='C') OR (DAYCLOSE='R') THEN BEGIN
  859.                 CANCEL:=1;FLAG2:=1;
  860.                 IF DAYCLOSE='R' THEN RESTART:=1;
  861.                 END;
  862.                 IF CANCEL<>1 THEN BEGIN
  863.                     IF CLOSET<=0 THEN BEGIN
  864.                     GOTOXY(1,24);WRITE(ERASER);
  865.                     SOUND(800);DELAY(400);NOSOUND;
  866.                     GOTOXY(21,24);WRITE('STOCK VALUES OF ZERO ARE NOT ALLOWED.');DELAY(2000);
  867.                     CANCEL3:=1;FLAG2:=1;
  868.                     END;
  869.                 END;
  870.                 IF CANCEL<>1 THEN BEGIN
  871.                     IF (CLOSET>HIGHT) OR (CLOSET<LOWT) THEN BEGIN
  872.                     SOUND(800);DELAY(400);NOSOUND;GOTOXY(10,24);
  873.                     WRITE('TODAYS CLOSE IS GREATER THEN THE HIGH OR LESS THEN THE LOW.');DELAY(2000);
  874.                     CANCEL1:=1;FLAG2:=1
  875.                     END;
  876.                 END;
  877.                 GOTOXY(1,24);WRITE(ERASER);
  878.                 IF (CANCEL3=1) AND (FLAG2=1) THEN X1:=3 ELSE X1:=4;
  879.                 IF DAYCLOSE='N' THEN X1:=5;
  880.                 IF (CANCEL=1) AND (FLAG2=1) THEN X1:=5;
  881.                 IF (CANCEL1=1) AND (FLAG2=1) THEN X1:=1;
  882.                 END;
  883.             END;
  884.             IF (CANCEL<>1) OR (CANCEL2<>1) OR (CANCEL3<>1)    THEN BEGIN
  885.                 IF X1=4 THEN BEGIN
  886.                 GOTOXY(20,24);WRITE('WHAT IS THIS DATE VOLUME? ');
  887.                 READ(DAYVOLUME);
  888.                 VAL(DAYVOLUME,VOLUMET,ERROR);
  889.                 IF DAYVOLUME='n' THEN DAYVOLUME:='N';
  890.                 IF DAYVOLUME='N' THEN BEGIN
  891.                 HIGHT:=HIGH[X,30];LOWT:=LOW[X,30];CLOSET:=CLOSED[X,30];VOLUMET:=0.001;
  892.                 CANCEL:=1;
  893.                 END;
  894.                 IF VOLUMET<=0 THEN VOLUMET:=0.001;
  895.                 IF DAYVOLUME='c' THEN DAYVOLUME:='C';
  896.                 IF DAYVOLUME='d' THEN DAYVOLUME:='D';
  897.                 IF DAYVOLUME='r' THEN DAYVOLUME:='R';
  898.                 IF (DAYVOLUME='D') OR (DAYVOLUME='C') OR (DAYVOLUME='R') THEN BEGIN
  899.                 CANCEL:=1;FLAG2:=1;
  900.                 IF DAYVOLUME='R' THEN RESTART:=1;
  901.                 END;
  902.                 GOTOXY(1,24);WRITE(ERASER);
  903.                 X1:=5;
  904.                 END;
  905.             END;
  906.             END;
  907.         IF RESTART=1 THEN CANCEL:=0 ELSE CANCEL:=1;
  908.         IF RESTART=1 THEN STARTER:=1;
  909.             IF (DAYHIGH='D') OR (DAYLOW='D') OR (DAYCLOSE='D') OR (DAYVOLUME='D') THEN BEGIN
  910.             FOR Y:=30 DOWNTO 2 DO BEGIN
  911.             DATE[X,Y]:=DATE[X,Y-1];
  912.             HIGH[X,Y]:=HIGH[X,Y-1];
  913.             LOW[X,Y]:=LOW[X,Y-1];
  914.             CLOSED[X,Y]:=CLOSED[X,Y-1];
  915.             VOLUME[X,Y]:=VOLUME[X,Y-1];
  916.             SHORTAVG[X,Y]:=SHORTAVG[X,Y-1];
  917.             LONGAVG[X,Y]:=LONGAVG[X,Y-1];
  918.             SIGNAL[X,Y]:=SIGNAL[X,Y-1];
  919.             END;
  920.             END;
  921.             IF FLAG2=0 THEN BEGIN
  922.             IF SIGNAL[X,1]<3 THEN SIGNALHISTORY[X]:=SIGNAL[X,1];
  923.             FOR Y:=1 TO 29 DO BEGIN
  924.             DATE[X,Y]:=DATE[X,Y+1];
  925.             HIGH[X,Y]:=HIGH[X,Y+1];
  926.             LOW[X,Y]:=LOW[X,Y+1];
  927.             CLOSED[X,Y]:=CLOSED[X,Y+1];
  928.             VOLUME[X,Y]:=VOLUME[X,Y+1];
  929.             SHORTAVG[X,Y]:=SHORTAVG[X,Y+1];
  930.             LONGAVG[X,Y]:=LONGAVG[X,Y+1];
  931.             SIGNAL[X,Y]:=SIGNAL[X,Y+1];
  932.             END;
  933.             STR(DATEM,DATETEMP);
  934.             IF DATEM<10 THEN DATETEMP:=' '+DATETEMP;
  935.             DATE[X,30]:=DATETEMP+'/';
  936.             STR(DATED,DATETEMP);
  937.             IF DATED<10 THEN DATETEMP:=' '+DATETEMP;
  938.             DATE[X,30]:=DATE[X,30]+DATETEMP+'/';
  939.             STR(DATEY,DATETEMP);
  940.             DATE[X,30]:=DATE[X,30]+DATETEMP;
  941.             HIGH[X,30]:=HIGHT;
  942.             HIGH[X,30]:=INT(HIGH[X,30]*100+0.5)/100;
  943.             LOW[X,30]:=LOWT;
  944.             LOW[X,30]:=INT(LOW[X,30]*100+0.5)/100;
  945.             CLOSED[X,30]:=CLOSET;
  946.             CLOSED[X,30]:=INT(CLOSED[X,30]*100+0.5)/100;
  947.             VOLUME[X,30]:=VOLUMET;
  948.             VOLUME[X,30]:=INT(VOLUME[X,30]*100+0.5)/100;
  949.             SHORTAVG[X,30]:=((CLOSED[X,30]-SHORTAVG[X,29])*(2/(SHORT[X]+1)))+SHORTAVG[X,29];
  950.             SHORTAVG[X,30]:=INT(SHORTAVG[X,30]*100+0.5)/100;
  951.             LONGAVG[X,30]:=((CLOSED[X,30]-LONGAVG[X,29])*(2/(LONG[X]+1)))+LONGAVG[X,29];
  952.             LONGAVG[X,30]:=INT(LONGAVG[X,30]*100+0.5)/100;
  953.             FLAG2:=0;FLAG1:=0;
  954.             FOR Y:=29 DOWNTO 1 DO BEGIN
  955.                 IF FLAG1=0 THEN BEGIN
  956.                 IF SIGNAL[X,Y]<3 THEN BEGIN
  957.                 FLAG2:=SIGNAL[X,Y];FLAG1:=1;
  958.                 END;
  959.                 END;
  960.             END;
  961.             SIGNAL[X,30]:=3;
  962.             IF FLAG2=0 THEN FLAG2:=SIGNALHISTORY[X];
  963.             IF FLAG2=2 THEN BEGIN
  964.                 IF (LONGAVG[X,30]-SHORTAVG[X,30])<=(LONGAVG[X,29]-SHORTAVG[X,29]) THEN BEGIN
  965.                 IF CLOSED[X,30]>=CLOSED[X,(30-CHORD[X])] THEN SIGNAL[X,30]:=1 ELSE SIGNAL[X,30]:=3;
  966.                 END;
  967.             END;
  968.             IF FLAG2=1 THEN BEGIN
  969.                 IF (LONGAVG[X,30]-SHORTAVG[X,30])>(LONGAVG[X,29]-SHORTAVG[X,29]) THEN BEGIN
  970.                 IF CLOSED[X,30]<CLOSED[X,(30-CHORD[X])] THEN SIGNAL[X,30]:=2 ELSE SIGNAL[X,30]:=3;
  971.                 END;
  972.             END;
  973.             END;
  974.         END;
  975.         FLAG2:=0;FLAG1:=0;
  976.         SCREEN:='M';SCREEN1:='A'
  977.         END;
  978.     CANCEL:=0;
  979.     END;
  980.     IF SCREEN='B' THEN BEGIN
  981.     GOTOXY(45,23);WRITE('ADD STOCK HELP SCREEN');
  982.     GOTOXY(1,25);WRITE(ERASER);
  983.     GOTOXY(18,25);WRITE('WHAT IS THE NEWSPAPER LISTING ?  (             )');
  984.     F3;
  985.     STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;
  986.     GOTOXY(1,24);WRITE(ERASER);
  987.         IF CANCEL<2 THEN BEGIN
  988.         IF TOP>31 THEN BEGIN
  989.         GOTOXY(1,25);WRITE(ERASER);
  990.         SOUND(800);DELAY(400);NOSOUND;
  991.         GOTOXY(1,25);WRITE('                     SORRY!  YOU ARE AT THE MAXIMUM NUMBER OF STOCKS.');DELAY(2000);
  992.         END;
  993.         IF TOP<32 THEN BEGIN
  994.         TOP:=TOP+1;
  995.         FLAG1:=TOP;FLAG2:=0;
  996.             FOR X:=(TOP-1) DOWNTO 1 DO BEGIN
  997.             IF STOCK < NAME[X] THEN BEGIN
  998.             FLAG1:=X;
  999.             NAME[X+1]:=NAME[X];NAME[X]:=STOCK;LONG[X+1]:=LONG[X];LONG[X]:=0;SHORT[X+1]:=SHORT[X];SHORT[X]:=0;
  1000.             CHORD[X+1]:=CHORD[X];CHORD[X]:=0;SIGNALHISTORY[X+1]:=SIGNALHISTORY[X];SIGNALHISTORY[X]:=3;
  1001.                 FOR Y:=1 TO 30 DO BEGIN
  1002.                 DATE[X+1,Y]:=DATE[X,Y];HIGH[X+1,Y]:=HIGH[X,Y];LOW[X+1,Y]:=LOW[X,Y];
  1003.                 CLOSED[X+1,Y]:=CLOSED[X,Y];VOLUME[X+1,Y]:=VOLUME[X,Y];LONGAVG[X+1,Y]:=LONGAVG[X,Y];
  1004.                 SHORTAVG[X+1,Y]:=SHORTAVG[X,Y];SIGNAL[X+1,Y]:=SIGNAL[X,Y];
  1005.                 END;
  1006.             END;
  1007.             END;
  1008.             IF FLAG1=TOP THEN BEGIN
  1009.             NAME[TOP]:=STOCK;LONG[TOP]:=0;SHORT[TOP]:=0;CHORD[TOP]:=0;SIGNALHISTORY[TOP]:=3;
  1010.             END;
  1011.         X:=FLAG1;FLAG1:=0;
  1012.         STOCKSTART;
  1013.         DISCLAIM:=1;
  1014.         END;
  1015.         SCREEN:='M';SCREEN1:='B'
  1016.         END;
  1017.     CANCEL:=0;
  1018.     END;
  1019.     IF SCREEN='C' THEN BEGIN
  1020.     GOTOXY(45,23);WRITE('DELETE STOCK HELP SCREEN');
  1021.     GOTOXY(1,25);WRITE(ERASER);
  1022.     GOTOXY(14,25);WRITE('WHICH STOCK DO YOU WISH TO DELETE ?  (             )');
  1023.     F3;
  1024.     STOCKSELECT;STARTER:=19;
  1025.     GOTOXY(1,24);WRITE(ERASER);
  1026.     IF CANCEL<2 THEN BEGIN
  1027.          X:=UPDATECOUNT;
  1028.          ENDSTR:=POS(' ',NAME[X]);IF ENDSTR=0 THEN ENDSTR:=8;
  1029.          IF ENDSTR<>0 THEN BEGIN
  1030.          STOCK:=COPY(NAME[X],1,ENDSTR-1);
  1031.              IF STOCK<>'DOW' THEN BEGIN
  1032.              FLAG1:=0;FLAG2:=0;
  1033.              FLAG2:=X;
  1034.              IF CLOSED[X,30]>CLOSED[X,29] THEN CLOSECOLOR:=LTGREEN;
  1035.              IF CLOSED[X,30]>CLOSED[X,29] THEN CLOSECOLOR:=LTRED;
  1036.              IF CLOSED[X,30]=CLOSED[X,29] THEN CLOSECOLOR:=WHITE;
  1037.              IF LONGAVG[X,30]>LONGAVG[X,29] THEN LONGCOLOR:=LTGREEN;
  1038.              IF LONGAVG[X,30]<LONGAVG[X,29] THEN LONGCOLOR:=LTRED;
  1039.              IF LONGAVG[X,30]=LONGAVG[X,29] THEN LONGCOLOR:=WHITE;
  1040.              CLRSCR;UPDATE;
  1041.              TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
  1042.              GOTOXY(9,22);WRITE('YOU ARE IN THE STOCK DELETE MODE');
  1043.              WRITE('  AND THE STOCK IS ');
  1044.              IF COLOR='N' THEN BEGIN
  1045.              TEXTCOLOR(0);TEXTBACKGROUND(7);
  1046.              END;
  1047.              IF COLOR='Y' THEN TEXTCOLOR(YELLOW);
  1048.              WRITELN(NAME[X]);TEXTCOLOR(WHITE);
  1049.              GOTOXY(1,25);WRITE(ERASER);
  1050.              GOTOXY(18,25);WRITE('IS THIS THE STOCK YOU WISH TO DELETE (Y/N).  ');
  1051.              READ(GO);
  1052.              IF (GO='Y') OR (GO='y') THEN BEGIN
  1053.              GOTOXY(1,25);WRITE(ERASER);
  1054.              GOTOXY(30,25);WRITE('ARE YOU SURE (Y/N).  ');
  1055.              READ(GO);
  1056.                  IF (GO='Y') OR (GO='y') THEN BEGIN
  1057.                  IF FLAG2<TOP THEN BEGIN
  1058.                      FOR X:=FLAG2 TO (TOP-1) DO BEGIN
  1059.                      NAME[X]:=NAME[X+1];LONG[X]:=LONG[X+1];SHORT[X]:=SHORT[X+1];CHORD[X]:=CHORD[X+1];
  1060.                      FOR Y:=1 TO 30 DO BEGIN
  1061.                      DATE[X,Y]:=DATE[X+1,Y];HIGH[X,Y]:=HIGH[X+1,Y];LOW[X,Y]:=LOW[X+1,Y];
  1062.                      CLOSED[X,Y]:=CLOSED[X+1,Y];VOLUME[X,Y]:=VOLUME[X+1,Y];LONGAVG[X,Y]:=LONGAVG[X+1,Y];
  1063.                      SHORTAVG[X,Y]:=SHORTAVG[X+1,Y];SIGNAL[X,Y]:=SIGNAL[X+1,Y];
  1064.                      END;
  1065.                      END;
  1066.                  END;
  1067.                  NAME[TOP]:='';TOP:=TOP-1
  1068.                  END;
  1069.              END;
  1070.              END;
  1071.              IF STOCK='DOW' THEN BEGIN
  1072.              SOUND(800);DELAY(400);NOSOUND;
  1073.              GOTOXY(1,25);WRITE(ERASER);
  1074.              GOTOXY(8,25);WRITE('THE DOW AVERAGE OR IT''S EQUIVALENT IS NECESSARY IN THE PROGRAM.');DELAY(2000);
  1075.              GOTOXY(1,25);WRITE(ERASER);
  1076.              GOTOXY(19,25);WRITE('DO YOU WISH TO RESET THAT INDICATOR. (Y/N)  ');
  1077.              READ(GO);
  1078.              IF (GO='Y') OR (GO='y') THEN FLAG2:=1;
  1079.              IF FLAG2=1 THEN BEGIN
  1080.              X:=UPDATECOUNT;FLAG2:=0;STOCKSTART;
  1081.              END;
  1082.              END;
  1083.          END;
  1084.         SCREEN:='M';SCREEN1:='C';
  1085.         END;
  1086.     CANCEL:=0;
  1087.     END;
  1088.     IF SCREEN='D' THEN BEGIN
  1089.         FOR X:=1 TO TOP DO BEGIN
  1090.         ENDSTR:=POS(' ',NAME[X]);
  1091.         IF ENDSTR<>0 THEN BEGIN
  1092.         STOCK:=COPY(NAME[X],1,ENDSTR-1);
  1093.         IF STOCK='DOW' THEN DOW:=X;
  1094.         END;
  1095.         END;
  1096.         WHILE SCREEN='D' DO BEGIN
  1097.         CANCEL:=0;
  1098.         CLRSCR;TEXTBACKGROUND(RED);GOTOXY(20,8);WRITELN('                                        ');
  1099.         GOTOXY(20,9);WRITE(' ');GOTOXY(59,9);WRITELN(' ');
  1100.         GOTOXY(20,10);WRITE(' ');GOTOXY(59,10);WRITELN(' ');
  1101.         GOTOXY(20,11);WRITE(' ');GOTOXY(59,11);WRITELN(' ');
  1102.         GOTOXY(20,12);WRITE(' ');GOTOXY(59,12);WRITELN(' ');
  1103.         GOTOXY(20,13);WRITE(' ');GOTOXY(59,13);WRITELN(' ');
  1104.         GOTOXY(20,14);WRITE(' ');GOTOXY(59,14);WRITELN(' ');
  1105.         GOTOXY(20,15);WRITE(' ');GOTOXY(59,15);WRITELN(' ');
  1106.         GOTOXY(20,16);WRITE(' ');GOTOXY(59,16);WRITELN(' ');
  1107.         GOTOXY(20,17);WRITELN('                                        ');
  1108.         TEXTBACKGROUND(BLUE);TEXTCOLOR(YELLOW);
  1109.         GOTOXY(21,10);WRITE('    TO RETURN TO THE MAIN MENU TYPE   ');
  1110.         GOTOXY(21,11);WRITE('    THE CHARACTER M WHEN THE GRAPH    ');
  1111.         GOTOXY(21,12);WRITE('    COMPLETES.  IF YOU WISH TO VIEW   ');
  1112.         GOTOXY(21,13);WRITE('    OTHER STOCKS PRESS RETURN.  YOU   ');
  1113.         GOTOXY(21,14);WRITE('    CAN THEN SELECT THE LISTED STOCK  ');
  1114.         GOTOXY(21,15);WRITE('    WITH RETURN OR TYPE IN A NEW ONE. ');
  1115.         GOTOXY(80,25);
  1116.         UPDATECOUNT:=UPDATECOUNT+1;IF UPDATECOUNT>TOP THEN UPDATECOUNT:=1;
  1117.         GOTOXY(26,2);WRITE('F1..GRAPH STOCK HELP SCREEN');
  1118.         GOTOXY(1,25);WRITE(ERASER);TEXTCOLOR(WHITE);
  1119.         GOTOXY(15,25);WRITE('WHICH STOCK DO YOU WISH TO GRAPH    (  ',NAME[UPDATECOUNT],'  )');
  1120.         F3;
  1121.         STOCKSELECT;
  1122.         GOTOXY(1,24);WRITE(ERASER);
  1123.         IF CANCEL<3 THEN BEGIN
  1124.         IF STOCK='' THEN X:=UPDATECOUNT;
  1125.         GRAPHMODE;GRAPHBACKGROUND(BLUE);
  1126.         LOWEST:=LOW[X,1];HIGHEST:=HIGH[X,1];AVERAGE:=(LOWEST+HIGHEST)/2;
  1127.         DOWPOINT:=CLOSED[DOW,1]/30;STARTPT1:=DOWPOINT-AVERAGE;
  1128.             FOR Y:=1 TO 30 DO BEGIN
  1129.             IF LOWEST>LOW[X,Y] THEN LOWEST:=LOW[X,Y];
  1130.             STARTPT:=DOWPOINT-STARTPT1;IF LOWEST>=STARTPT THEN LOWEST:=STARTPT;
  1131.             IF HIGHEST<HIGH[X,Y] THEN HIGHEST:=HIGH[X,Y];
  1132.             IF HIGHEST<=STARTPT+1 THEN HIGHEST:=STARTPT+1 ;
  1133.             END;
  1134.         LOWEST1:=LOWEST;
  1135.         AVERAGE:=AVERAGE+1;
  1136.         LOWEST:=ROUND((LOWEST)-0.5);
  1137.         IF LOWEST1<LOWEST THEN LOWEST:=LOWEST-1;
  1138.         HIGHEST1:=HIGHEST;
  1139.         HIGHEST:=ROUND(HIGHEST+0.5);
  1140.         IF HIGHEST1>HIGHEST THEN HIGHEST:=HIGHEST+1;
  1141.         GRAPHMID:=150/(HIGHEST-LOWEST);
  1142.         CLEARSCREEN;COLORSW:=0;DOWSW:=0;
  1143.             FOR Y:=1 TO 30 DO BEGIN
  1144.             START:=(CLOSED[X,Y]);
  1145.             DOWPOINT:=(CLOSED[DOW,Y]/30)-STARTPT1;
  1146.             UP:=ROUND((HIGH[X,Y]-START)*GRAPHMID);
  1147.             IF UP<0 THEN UP:=0;
  1148.             DOWN:=ROUND(((HIGH[X,Y]-START)*GRAPHMID))+ROUND(((START-LOW[X,Y])*GRAPHMID));
  1149.             IF DOWN<UP THEN DOWN:=UP;
  1150.             IF (UP<=1) AND (DOWN<=2) THEN BEGIN
  1151.             UP:=1;DOWN:=2;
  1152.             END;
  1153.             BACKUP:=DOWN-UP;
  1154.             X1:=4+10*(Y-1);Y1:=ROUND((HIGHEST-START)*GRAPHMID);X3:=X1;Y3:=Y1;
  1155.             COLR:=3;
  1156.             PLOT(X1+2,Y1,COLR);X2:=X1+2;
  1157.             Y2:=Y1+1;X1:=X2;DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y1+1;X2:=X1+2;DRAW(X1,Y1,X2,Y1,COLR);X1:=X2;Y2:=Y1-2;
  1158.             DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y2;X2:=X1-2;DRAW(X1,Y1,X2,Y1,COLR);X1:=X2;Y2:=Y1+1;DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y2;
  1159.             Y2:=Y1-UP;DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y2;X2:=X1-4;DRAW(X1,Y1,X2,Y1,COLR);X1:=X2;Y2:=Y1+DOWN;
  1160.             DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y2;X2:=X1+4;DRAW(X1,Y1,X2,Y1,COLR);X1:=X2;Y2:=Y1-BACKUP;DRAW(X1,Y1,X1,Y2,COLR);
  1161.             COLR:=SIGNAL[X,Y];
  1162.             FILLHOLE;
  1163.             END;
  1164.         DOWSW:=0;
  1165.             IF X<>DOW THEN BEGIN
  1166.             FOR Y:=1 TO 30 DO BEGIN
  1167.                 IF SIGNAL[DOW,Y]=1 THEN BEGIN
  1168.                 X1:=((10*(Y-1))+4);Y1:=10;X3:=X1;Y3:=Y1;
  1169.                 Y1:=Y1+2;PLOT(X1,Y1,3);X2:=X1+3;
  1170.                 DRAW(X1,Y1,X2,Y1,3);Y2:=Y1-3;DRAW(X2,Y1,X1,Y2,3);Y1:=Y2+3;X2:=X1-3;DRAW(X1,Y2,X2,Y1,3);
  1171.                 DRAW(X2,Y1,X1,Y1,3);
  1172.                 FILLSHAPE(X3,Y3,CYAN,3);
  1173.                 END;
  1174.                 IF SIGNAL[DOW,Y]=2 THEN BEGIN
  1175.                 X1:=((10*(Y-1))+3);Y1:=10;X3:=X1;Y3:=Y1;
  1176.                 Y1:=Y1-2;PLOT(X1,Y1,3);X2:=X1-3;
  1177.                 DRAW(X1,Y1,X2,Y1,3);Y2:=Y1+3;DRAW(X2,Y1,X1,Y2,3);Y1:=Y2-3;X2:=X1+3;DRAW(X1,Y2,X2,Y1,3);
  1178.                 DRAW(X2,Y1,X1,Y1,3);
  1179.                 FILLSHAPE(X3,Y3,MAGENTA,3);
  1180.                 END;
  1181.             END;
  1182.             END;
  1183.             FOR Y:=1 TO 30 DO BEGIN
  1184.             IF HIGHVOL<VOLUME[X,Y] THEN HIGHVOL:=VOLUME[X,Y];
  1185.             END;
  1186.             HIGHVOL:=30/HIGHVOL;
  1187.             FOR Y:=1 TO 30 DO BEGIN
  1188.             VOLUMEST:= ROUND((VOLUME[X,Y]*HIGHVOL));
  1189.             X1:=(10*(Y-1)+4);Y1:=185;X3:=X1;Y3:=Y1;
  1190.             PLOT(X1,Y1,3);X2:=X1+2;
  1191.             DRAW(X1,Y1,X2,Y1,3);Y2:=Y1-VOLUMEST;DRAW(X2,Y1,X2,Y2,3);X1:=X2-4;
  1192.             DRAW(X2,Y2,X1,Y2,3);Y1:=Y2+VOLUMEST;DRAW(X1,Y2,X1,Y1,3);X2:=X1+2;DRAW(X1,Y1,X2,Y1,3);
  1193.             IF VOLUMEST>1 THEN FILLSHAPE(X3,Y3-1,MAGENTA,3);
  1194.             END;
  1195.             SKIP:=0;SKIP1:=0;
  1196.             FOR Y:=1 TO 29 DO BEGIN
  1197.             X1:=10*(Y-1)+4;Y1:=ROUND((HIGHEST-LONGAVG[X,Y])*GRAPHMID);Y2:=ROUND((HIGHEST-LONGAVG[X,Y+1])*GRAPHMID);
  1198.             Y3:=ROUND((Y1+Y2)/2);
  1199.             IF SKIP=0 THEN BEGIN
  1200.             DRAW(X1,Y1,X1+3,Y3,MAGENTA);CIRCLE(X1+5,Y3,2,MAGENTA);DRAW(X1+7,Y3,X1+10,Y2,MAGENTA);
  1201.             FILLSHAPE(X1+5,Y3,MAGENTA,MAGENTA);SKIP:=1;
  1202.             END;
  1203.             IF SKIP1=1 THEN BEGIN
  1204.             DRAW(X1,Y1,X1+10,Y2,MAGENTA);
  1205.             SKIP:=0;SKIP1:=0;
  1206.             END;
  1207.             IF SKIP=1 THEN SKIP1:=1;
  1208.             END;
  1209.             FOR Y:=1 TO 29 DO BEGIN
  1210.             X1:=10*(Y-1)+4;Y1:=ROUND((HIGHEST-SHORTAVG[X,Y])*GRAPHMID);Y2:=ROUND((HIGHEST-SHORTAVG[X,Y+1])*GRAPHMID);
  1211.             DRAW(X1,Y1,X1+10,Y2,3);
  1212.             END;
  1213.             IF (HIGHEST-LOWEST)*GRAPHMID<=175 THEN BEGIN
  1214.             Y1:=ROUND(((HIGHEST-LOWEST)*GRAPHMID));SETTER:=HIGHEST;SETTER1:=LOWEST;
  1215.             DRAWLINE;
  1216.             {DRAW BOTTOM OF GRAPH LINE & LABEL}
  1217.             END;
  1218.         Y1:=0;SETTER:=HIGHEST;SETTER1:=HIGHEST;
  1219.         DRAWLINE;
  1220.         {DRAW TOP OF GRAPH LINE & LABEL}
  1221.         GRAPHLINE:=LOWEST;
  1222.         IF HIGHEST-LOWEST<=4 THEN STEPPER:=1;
  1223.         IF HIGHEST-LOWEST>4 THEN STEPPER:=2;
  1224.         IF HIGHEST-LOWEST>10 THEN STEPPER:=5;
  1225.         IF HIGHEST-LOWEST>20 THEN STEPPER:=10;
  1226.         IF HIGHEST-LOWEST>50 THEN STEPPER:=15;
  1227.             WHILE GRAPHLINE+STEPPER<HIGHEST DO BEGIN
  1228.             GRAPHLINE:=GRAPHLINE+STEPPER;
  1229.             Y1:=ROUND((HIGHEST-GRAPHLINE)*GRAPHMID);SETTER:=HIGHEST;SETTER1:=GRAPHLINE;
  1230.             DRAWLINE;
  1231.             {DRAW INTERMEDIATE LINE}
  1232.             END;
  1233.         Y3:=0;
  1234.             FOR Y:=1 TO 25 DO BEGIN
  1235.             Y3:=Y3+1;
  1236.             IF Y3=5 THEN BEGIN
  1237.             DATEP:=DATE[X,Y];
  1238.             DATEP:=COPY(DATEP,1,5);
  1239.             IF COPY(DATEP,5,1)='/' THEN DATEP:=COPY(DATEP,1,4);
  1240.             WINDOW(1,24,40,25);GOTOXY(TRUNC(((10*(Y-1)+4)/8)-1),2);WRITE(DATEP);
  1241.             X1:=(10*(Y-1))+4;Y1:=180;Y2:=0;
  1242.             DRAW(X1,Y1,X1,Y2,3);
  1243.             Y3:=0;
  1244.             END;
  1245.             END;
  1246.         WINDOW(16,1,24,2);X1:=LENGTH(NAME[X]);X1:=TRUNC((8-X1)/2);GOTOXY(1+X1,1);
  1247.         WRITE(NAME[X]);
  1248.         READ(KBD,GO);
  1249.         TEXTMODE(3);TEXTBACKGROUND(BLUE);
  1250.         WINDOW(1,1,80,25);CLRSCR;
  1251.         PORT[$3D9]:=BLUE;
  1252.         GO:=UPCASE(GO);
  1253.         IF GO='M' THEN SCREEN:='M';SCREEN1:='A';
  1254.         IF GO<>'M' THEN SCREEN:='D';SCREEN1:='D';
  1255.         END;
  1256.         CANCEL:=0;
  1257.         END;
  1258.     END;
  1259.     IF SCREEN='F' THEN BEGIN
  1260.     TEXTMODE;TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
  1261.         CLRSCR;GOTOXY(20,8);TEXTBACKGROUND(RED);WRITELN('                                        ');
  1262.         GOTOXY(20,9);WRITE(' ');GOTOXY(59,9);WRITELN(' ');
  1263.         GOTOXY(20,10);WRITE(' ');GOTOXY(59,10);WRITELN(' ');
  1264.         GOTOXY(20,11);WRITE(' ');GOTOXY(59,11);WRITELN(' ');
  1265.         GOTOXY(20,12);WRITE(' ');GOTOXY(59,12);WRITELN(' ');
  1266.         GOTOXY(20,13);WRITE(' ');GOTOXY(59,13);WRITELN(' ');
  1267.         GOTOXY(20,14);WRITE(' ');GOTOXY(59,14);WRITELN(' ');
  1268.         GOTOXY(20,15);WRITE(' ');GOTOXY(59,15);WRITELN(' ');
  1269.         GOTOXY(20,16);WRITELN('                                        ');
  1270.         TEXTBACKGROUND(BLUE);TEXTCOLOR(YELLOW);
  1271.         GOTOXY(21,10);WRITE('    PLEASE INSURE THAT YOUR PRINTER   ');
  1272.         GOTOXY(21,11);WRITE('    IS ON AND HAS BEEN SELECTED. MOST ');
  1273.         GOTOXY(21,12);WRITE('    PRINTERS WILL DISPLAY TWO GREEN   ');
  1274.         GOTOXY(21,13);WRITE('    LIGHTS WHEN THE PRINTING CONDI-   ');
  1275.         GOTOXY(21,14);WRITE('    TION IS CORRECT.                  ');
  1276.     STARTER:=1;CANCEL:=0;TEXTCOLOR(WHITE);
  1277.     GOTOXY(26,2);WRITE('F1..PRINT STOCK HELP SCREEN');
  1278.     GOTOXY(1,25);WRITE(ERASER);
  1279.     GOTOXY(15,25);WRITE('WHICH STOCK DO YOU WISH TO PRINT    (           )');
  1280.     F3;
  1281.     STOCKSELECT;
  1282.     GOTOXY(1,24);WRITE(ERASER);
  1283.         IF CANCEL<2 THEN BEGIN
  1284.          IF STOCK='' THEN BEGIN
  1285.          X:=UPDATECOUNT;
  1286.          WRITELN(LST,ENHANCED,DOUBLE);
  1287.          WRITELN(LST);
  1288.          WRITELN(LST);
  1289.          WRITELN(LST);
  1290.          WRITE(LST,'   STOCK :',NAME[X]);
  1291.          WRITE(LST,'      Current Price :');WRITE(LST,CLOSED[X,30]:4:2);
  1292.          WRITE(LST,'      Current Average :');WRITELN(LST,LONGAVG[X,30]:4:2);
  1293.          WRITELN(LST);
  1294.          WRITELN(LST,'   DATE         HIGH        LOW        CLOSE   VOLUME     SH. AVER     LG. AVER');
  1295.          WRITELN(LST,NONENHANCED,NONDOUBLE);
  1296.              FOR Y:=1 TO 30 DO BEGIN
  1297.              WRITE(LST,'  ',DATE[X,Y],'   ',HIGH[X,Y]:8:2,'    ',LOW[X,Y]:8:2);
  1298.              IF CLOSED[X,Y]>CLOSED[X,Y-1] THEN WRITE(LST,ENHANCED,DOUBLE);
  1299.              IF CLOSED[X,Y]<CLOSED[X,Y-1] THEN WRITE(LST,UNDERLINE);
  1300.              WRITE(LST,'   ',CLOSED[X,Y]:8:2);
  1301.              WRITE(LST,NONUNDERLINE,NONENHANCED,NONDOUBLE);
  1302.              WRITE(LST,' ',VOLUME[X,Y]:8:0);
  1303.              IF SHORTAVG[X,Y]>SHORTAVG[X,Y-1] THEN WRITE(LST,ENHANCED,DOUBLE);
  1304.              IF SHORTAVG[X,Y]<SHORTAVG[X,Y-1] THEN WRITE(LST,UNDERLINE);
  1305.              WRITE(LST,'    ',SHORTAVG[X,Y]:8:2);
  1306.              WRITE(LST,NONUNDERLINE,NONENHANCED,NONDOUBLE);
  1307.              IF LONGAVG[X,Y]>LONGAVG[X,Y-1] THEN WRITE(LST,ENHANCED,DOUBLE);
  1308.              IF LONGAVG[X,Y]<LONGAVG[X,Y-1] THEN WRITE(LST,UNDERLINE);
  1309.              WRITELN(LST,'    ',LONGAVG[X,Y]:8:2);
  1310.              WRITE(LST,NONUNDERLINE,NONENHANCED,NONDOUBLE);
  1311.              END;
  1312.          WRITELN(LST,CHR(12));
  1313.          END;
  1314.         END;CANCEL:=0;
  1315.     SCREEN:='M';SCREEN1:='F';
  1316.     END;
  1317.     IF SCREEN='H' THEN BEGIN
  1318.     GOTOXY(45,23);WRITE('SPLIT STOCK HELP SCREEN ');
  1319.     GOTOXY(1,25);WRITE(ERASER);
  1320.     GOTOXY(14,25);WRITE('WHICH STOCK DO YOU WISH TO SPLIT?    (             )');
  1321.     F3;
  1322.     STOCKSELECT;
  1323.     GOTOXY(1,24);WRITE(ERASER);
  1324.          IF CANCEL<2 THEN BEGIN
  1325.          X:=UPDATECOUNT;
  1326.          GOTOXY(1,25);WRITE(ERASER);
  1327.          GOTOXY(13,25);WRITE('THE SPLIT IS (    ) NEW SHARES FOR (    ) OLD SHARES.');
  1328.          GOTOXY(29,25);READ(Y3);GOTOXY(51,25);READ(Y2);
  1329.          FOR Y:=1 TO 30 DO BEGIN
  1330.          HIGH[X,Y]:=HIGH[X,Y]*Y2/Y3;LOW[X,Y]:=LOW[X,Y]*Y2/Y3;CLOSED[X,Y]:=CLOSED[X,Y]*Y2/Y3;VOLUME[X,Y]:=VOLUME[X,Y]*Y3/Y2;
  1331.          SHORTAVG[X,Y]:=SHORTAVG[X,Y]*Y2/Y3;LONGAVG[X,Y]:=LONGAVG[X,Y]*Y2/Y3;
  1332.          END;
  1333.          GOTOXY(1,25);WRITE(ERASER);
  1334.          GOTOXY(16,25);WRITE('ALL VALUES HAVE BEEN ADJUSTED FOR THE NEW SPLIT. ');DELAY(2000);
  1335.          SCREEN:='M';SCREEN1:='A';
  1336.          END;
  1337.     CANCEL:=0;
  1338.     END;
  1339.     IF SCREEN='I' THEN BEGIN
  1340.     NAMEIT:='SCREENI.DAT';SCREENPRINT;
  1341.     CLRSCR;TEXTCOLOR(YELLOW);
  1342.     IF COLOR='N' THEN TEXTCOLOR(GRAY);
  1343.     NAMEIT:='CONTROL.DAT';
  1344.     ASSIGN(STOCKFILE,NAMEIT);
  1345.     RESET(STOCKFILE);
  1346.         FOR Y1:=1 TO 24 DO BEGIN
  1347.         READLN(STOCKFILE,FILEWRITE);
  1348.         WRITELN(FILEWRITE);
  1349.         END;
  1350.     READLN(STOCKFILE,SCREEN);
  1351.     READLN(STOCKFILE,NAMEIT);
  1352.     CLOSE(STOCKFILE);
  1353.         FOR X:=12 TO 17 DO BEGIN
  1354.         GOTOXY(54,X);WRITE(PRINT[((X-12)*3)+1]);
  1355.         GOTOXY(62,X);WRITE(PRINT[((X-12)*3)+2]);
  1356.         GOTOXY(70,X);WRITE(PRINT[((X-12)*3)+3]);
  1357.         END;
  1358.     GOTOXY(54,20);WRITE(COLOR);
  1359.         FOR X:=12 TO 17 DO BEGIN
  1360.         LOCATEY:=X;LOCATEX:=53;STOP:=3;WRITER;
  1361.         IF STOCK<>'' THEN VAL(STOCK,PRINT[((X-12)*3)+1],Y3);
  1362.         LOCATEX:=Y;LOCATEX:=61;STOP:=3;WRITER;
  1363.         IF STOCK<>'' THEN VAL(STOCK,PRINT[((X-12)*3)+2],Y3);
  1364.         LOCATEX:=Y;LOCATEX:=69;STOP:=3;WRITER;
  1365.         IF STOCK<>'' THEN VAL(STOCK,PRINT[((X-12)*3)+3],Y3);
  1366.         END;
  1367.     FLAG1:=0;
  1368.         WHILE FLAG1=0 DO BEGIN
  1369.         GO:=COLOR;COLOR:=' ';
  1370.         GOTOXY(54,20);READ(KBD,COLOR);
  1371.         IF ORD(COLOR)>90 THEN COLOR:=CHR(ORD(COLOR)-32);
  1372.         IF COLOR=CHR(13) THEN COLOR:=GO;
  1373.         IF (COLOR='Y') OR (COLOR='N') THEN FLAG1:=1;
  1374.         IF FLAG1=0 THEN BEGIN
  1375.         SOUND(800);DELAY(500);NOSOUND;
  1376.         END;
  1377.         END;
  1378.     GOTOXY(54,20);WRITE(COLOR);
  1379.     ASSIGN(STOCKFILE,'CONFIG.DAT');
  1380.     REWRITE(STOCKFILE);
  1381.     WRITELN(STOCKFILE,COLOR);
  1382.     WRITELN(STOCKFILE,PRINT[1],'  ',PRINT[2],'  ',PRINT[3]);
  1383.     WRITELN(STOCKFILE,PRINT[4],'  ',PRINT[5],'  ',PRINT[6]);
  1384.     WRITELN(STOCKFILE,PRINT[7],'  ',PRINT[8],'  ',PRINT[9]);
  1385.     WRITELN(STOCKFILE,PRINT[10],'  ',PRINT[11],'  ',PRINT[12]);
  1386.     WRITELN(STOCKFILE,PRINT[13],'  ',PRINT[14],'  ',PRINT[15]);
  1387.     WRITELN(STOCKFILE,PRINT[16],'  ',PRINT[17],'  ',PRINT[18]);
  1388.     CLOSE(STOCKFILE);
  1389.     CHANGECOLOR;TEXTMODE;
  1390.     CANCEL:=0;SCREEN:='M';SCREEN1:='A';
  1391.     END;
  1392.     IF SCREEN='J' THEN BEGIN
  1393.     GOTOXY(45,23);WRITE('TRADING INDICATOR HELP SCREEN');
  1394.     GOTOXY(1,25);WRITE(ERASER);
  1395.     GOTOXY(15,25);TEXTCOLOR(WHITE);WRITE('WHICH STOCK DO YOU WISH TO CHANGE   (            )');
  1396.     F3;
  1397.     STOCKSELECT;
  1398.     GOTOXY(1,24);WRITE(ERASER);
  1399.          IF CANCEL<2 THEN BEGIN
  1400.          X:=UPDATECOUNT;
  1401.          IF FLAG1=1 THEN BEGIN
  1402.          SIGNALSET;FLAG1:=SIGNALHISTORY[X];
  1403.              FOR Y:=2 TO 30 DO BEGIN
  1404.              SHORTAVG[X,Y]:=((CLOSED[X,Y]-SHORTAVG[X,Y-1])*(2/(SHORT[X]+1))+SHORTAVG[X,Y-1]);
  1405.              SHORTAVG[X,Y]:=INT(SHORTAVG[X,Y]*100+0.5)/100;
  1406.              LONGAVG[X,Y]:=((CLOSED[X,Y]-LONGAVG[X,Y-1])*(2/(LONG[X]+1))+LONGAVG[X,Y-1]);
  1407.              LONGAVG[X,Y]:=INT(LONGAVG[X,Y]*100+0.5)/100;
  1408.              IF Y>CHORD[X] THEN SPAN:=CHORD[X];
  1409.              IF Y<CHORD[X] THEN SPAN:=Y-1;
  1410.              SIGNAL[X,Y]:=3;
  1411.              IF (LONGAVG[X,Y]-SHORTAVG[X,Y]<=LONGAVG[X,Y-1]-SHORTAVG[X,Y-1]) THEN BEGIN
  1412.                  IF CLOSED[X,Y]>=CLOSED[X,Y-SPAN] THEN BEGIN
  1413.                  IF FLAG1=2 THEN BEGIN
  1414.                  SIGNAL[X,Y]:=1;FLAG1:=1;FLAG2:=1;
  1415.                  END;
  1416.                  END;
  1417.              END;
  1418.              IF (LONGAVG[X,Y]-SHORTAVG[X,Y]>LONGAVG[X,Y-1]-SHORTAVG[X,Y-1]) THEN BEGIN
  1419.                  IF CLOSED[X,Y]<CLOSED[X,Y-SPAN] THEN BEGIN
  1420.                  IF (FLAG1=1) AND (FLAG2=0) THEN BEGIN
  1421.                  SIGNAL[X,Y]:=2;FLAG1:=2;
  1422.                  END;
  1423.                  END;
  1424.              FLAG2:=0;
  1425.              END;
  1426.              END;
  1427.          GOTOXY(1,25);WRITE(ERASER);
  1428.          GOTOXY(27,25);WRITE('RECALCULATION COMPLETED.');DELAY(500);
  1429.          END;
  1430.         SCREEN:='M';SCREEN1:='J';
  1431.         END;
  1432.     CANCEL:=0;
  1433.     END;
  1434.     IF (SCREEN='G') OR (SCREEN='K') THEN BEGIN
  1435.         CLRSCR;GOTOXY(29,12);TEXTCOLOR(WHITE+16);WRITE('WRITING');TEXTCOLOR(WHITE);WRITELN(' TO STOCK FILE');
  1436.         GOTOXY(80,25);
  1437.         ASSIGN(STOCKFILE,'STOCKS.DAT');
  1438.         REWRITE(STOCKFILE);
  1439.         WRITELN(STOCKFILE,DISCLAIM);
  1440.         FOR X:=1 TO TOP DO BEGIN
  1441.         WRITELN(STOCKFILE,NAME[X]);
  1442.         WRITELN(STOCKFILE,LONG[X]);
  1443.         WRITELN(STOCKFILE,SHORT[X]);
  1444.         WRITELN(STOCKFILE,CHORD[X]);
  1445.         WRITELN(STOCKFILE,SIGNALHISTORY[X]);
  1446.         FOR Y:=1 TO 30 DO BEGIN
  1447.         WRITE(STOCKFILE,DATE[X,Y],'  ',HIGH[X,Y]:8:2,'  ',LOW[X,Y]:8:2,'  ',CLOSED[X,Y]:8:2,'  ',VOLUME[X,Y]:8:0);
  1448.         WRITELN(STOCKFILE,'  ',LONGAVG[X,Y]:8:2,'  ',SHORTAVG[X,Y]:8:2,'  ',SIGNAL[X,Y]) ;
  1449.         END;
  1450.         END;
  1451.     CLOSE(STOCKFILE);
  1452.     IF SCREEN='G' THEN SCREEN:='M';SCREEN1:='A';
  1453.     IF SCREEN='K' THEN SCREEN:='O';CLRSCR;
  1454.     END;
  1455.     END;
  1456. END.
  1457.